【问题标题】:Xtend: filter an ArrayList of StringsXtend:过滤字符串的 ArrayList
【发布时间】:2015-01-12 16:23:27
【问题描述】:

我有一个这样声明的数组列表:

val aName = new ArrayList

我通过 add() 在这个数组中添加名字。

当我打印它们时,我只想打印特定的姓名(例如,所有姓名为“查理”并在财务部门工作的人)。

在我的 for 循环中,我有这个:

for (m: aName.filter[!CDirectoryFacade::instance.isNameUsed(toString)])
{
    print(m)
}

上面的循环根本没有打印名称。 因为我的函数 isNameUsed() 没有按我的预期接收字符串,而是将地址作为字符串接收

org.generator.myDsl.myDslGenerator@67bd0a26

但是,当我不使用 filter() 时,我似乎没有问题。

for (m: aName)
{
   if (!CDirectoryFacade::instance.isNameUsed(m))
   {
     print(m)
   }        
}

谁能建议如何将 filter() 与字符串一起使用?

【问题讨论】:

    标签: java arraylist filter xtend


    【解决方案1】:

    很难说,因为您的代码 sn-p 不提供任何类型,并且不清楚 nameprint 表达式中的来源。 但是上面的代码应该是这样的:

    for (m: aName.filter[!CDirectoryFacade::instance.isNameUsed(toString)])
    {
        print(m.name) // instead of print(name)
    }
    

    我可以更简洁:

    aName.filter[!CDirectoryFacade::instance.isNameUsed(toString)].forEach[ print(name) ]
    

    【讨论】:

    • 那是一个错字。它应该是 print(m),因为它是字符串的 ArrayList。在 isNameUsed() 中,我打印了我收到的内容(“toString”的内容是什么)。但我没有名字。我得到了这个:org.generator.myDsl.myDslGenerator@67bd0a26
    • 请分享整个方法体。我试图重现,但代码对我有用。您使用哪个版本的 Xtend?
    猜你喜欢
    • 2018-09-18
    • 2018-05-05
    • 1970-01-01
    • 1970-01-01
    • 2013-06-19
    • 2010-10-28
    • 1970-01-01
    • 2011-08-22
    相关资源
    最近更新 更多