2
リストの理解やそれと同様の方法を使って、このような訪問を1行に書き直すことは可能ですか?さらに短い訪問を書く
list[str] nodeNames = [];
visit (ast) {
case someNode(str name): {
nodeNames += name;
}
};
リストの理解やそれと同様の方法を使って、このような訪問を1行に書き直すことは可能ですか?さらに短い訪問を書く
list[str] nodeNames = [];
visit (ast) {
case someNode(str name): {
nodeNames += name;
}
};
はいあなたは私たちが子孫の試合呼んオペレータ/
使用することができます:あなたがここに
[
と]
間のリストの内包を参照してください [name | /someNode(str name) := ast];
を。
:=
は、パターンが左側に、件名が右側にあります。/someNode(str name)
は、フォームsomeNode(str name)
の各サブノードと一致し、パターン変数name
をバインドします。全体的な効果は、訪問:name
,のすべてのフィールドが収集され、リストに配置された使用と同じです。これはあなたの問題に対する最短の解決方法です。
優秀!ちょうど私が探していたもの。ありがとうございました。 – Nicasso