私はこのリスト(how to do replacing-item in use nested list)をリストとして使用して、指定された条件を満たすアイテムを置き換える方法を解説しました。リスト内の特定の条件を満たすすべてのアイテムを交換する方法
具体的には、リスト内のすべての0を値= 0.5に置き換えたいとします。しかし、私が思いついたコードは、リストの最初のゼロを置き換えているように見えます。私はその理由を理解できません。
これは私のコードです:
to-report A-new-list-without-zeros [old new the-list]
let A-index-list n-values length the-list [?]
(foreach A-index-list the-list
[ if ?2 = old
[ report replace-item ?1 the-list new ]
])
report the-list
end
そして、これは何が起こるかです:
observer> show A-new-list-without-zeros 0 0.5 [0 1 0 5 5 0]
observer: [0.5 1 0 5 5 0]
すべてのヘルプははるかに高く評価されるだろう!ありがとう
本当にありがとうございました@Luke C!それは完璧に動作します!ちょっと不思議なことに、私がガイドとして使ったポストで、なぜネストされた 'report'コマンドがうまくいったのですか?これは、その例が最初の項目にのみ焦点を当てたか、またはネストされたリストを扱ったからですか? – skivvy
心配はいりません!あなたの@ Seth Tisueの答えの2番目の部分についてあなたが話しているなら、彼は記者の中に記者を入れていることに気付くでしょう。その場合、彼の 'report-first'は、最初のアイテムの交換なしに**を置き換えてリストを報告するか、それとも続かないでしょう。 'report'が呼び出されると、そのプロシージャが実行されます。トリックは 'replace-first'が' replace-firsts'の中にネストされているので、 'replace-firsts'は傘リストを反復し、' replace-first'を使ってサブリストを評価していました。それは理にかなっていますか? –
ああ、私は今それを得ると思います。説明してもう一度私を助けてくれてありがとう! :) – skivvy