5

Xtend では、ループを中断したり、ループを中断するためのチェックを行うことはできますか?

«FOR e:d.entitys»
    «FOR a:e.attributes»
        «IF a.eClass.name.contentEquals('Something')»
            «e.name» "This output should be output one for each Entity e"
        «ENDIF»
    «ENDFOR»
«ENDFOR»

私の出力は次のとおりです。

Entity 1 "This output should be output one for each Entity e"
Entity 1 "This output should be output one for each Entity e"
Entity 1 "This output should be output one for each Entity e"
Entity 2 "This output should be output one for each Entity e"
Entity 4 "This output should be output one for each Entity e"
Entity 4 "This output should be output one for each Entity e"

しかし、私が欲しいのは:

Entity 1 "This output should be output one for each Entity e"
Entity 2 "This output should be output one for each Entity e"
Entity 4 "This output should be output one for each Entity e"

希望する出力をどのように実装できますか? 別のメソッドか何かを呼び出すことができると聞きましたが、それを行う方法がわかりません。誰かがこの問題のコードを教えてくれませんか? ありがとうございました :)

4

1 に答える 1

0

セットを使用して、既にアクセスしたエントリを保存できます。例として、次のプログラムを考えてみましょう。

def static void main(String... args) {
    val list = #['my', 'possibly', 'possibly', 'duplicated', 'duplicated', 'duplicated', 'entities']
    val visited = new LinkedHashSet
    println(
    '''«FOR a:list»
        «IF visited.add(a)»
            «a» "This output should be output one for each Entity e"
        «ENDIF»
    «ENDFOR»''')
}

以下を出力します。

my "This output should be output one for each Entity e"
possibly "This output should be output one for each Entity e"
duplicated "This output should be output one for each Entity e"
entities "This output should be output one for each Entity e"
于 2017-04-28T15:47:39.663 に答える