2017-12-18 13 views
1

あるエージェント(読者の品種)を結合するリンクの色を、フラグ(TM? = true)を持つ他の読者に変更したいと思います。 withがagentset真または偽の期待とされていないので、私のラインask my-rris with [other-TM-readers] [ set color red ]でエラーを返します条件の下で他のエージェントとのリンクの色を設定するには

breed [ readers reader ] 
undirected-link-breed [ rris rri ] 
readers-own [ TM? ] 

to start-TM [ ?reader ] 
    ask ?reader [ 
    if any? other readers with [ TM? = true ] [ 
     let other-TM-readers other readers with [ TM? = true ] 
     ask my-rris with [other-TM-readers] [ set color red ] 
    ] 
    ] 
end 

:コードは次のようなものです。 TM? = trueの読者と現在の読者を接続するrriリンクを選択するにはどうすればよいですか?

よろしく

答えて

2

あなたが書いた:

let other-TM-readers other readers with [ TM? = true ] 

あなたはTMother-TM-readers変数に真であるすべての読者のagentsetを割り当てることNetLogoを教えてください。だから、その後、書くとき:あなたはwithother-TM-readersagentsetを渡している

ask my-rris with [other-TM-readers] [ set color red ] 

、NetLogoは、そのエラーメッセージで言っているだけのよう。

これは修正するのは簡単ですが、最初にコメント:書き込み= trueはほとんど常に不必要です。 TM?変数はすでにブール値なので、with [ TM? = true ]の代わりにwith [ TM? ]と書いて直接チェックすることができます。

さて、エラーを修正するために、あなたが書くことができます。

let other-TM-readers other readers with [ TM? ] 
ask other-TM-readers [ 
    ask rri-with myself [ set color red ] 
] 

かだけを:

ask other readers with [ TM? ] [ 
    ask rri-with myself [ set color red ] 
] 

あなたはまた、直接のリンクを頼む、との色を確認するために、プリミティブother-endを使用することができます隣人:

ask my-rris with [ [ TM? ] of other-end ] [ set color red ] 

最後のバージョンも以前のバージョンよりも安全です発信者と他の読者との間にリンクがあると想定しないため、実際に存在するリンクのみを尋ねます。 (最初の2つのバージョンではrri-with myself != nobodyを確認できますが、それほどエレガントではありません)

+0

ありがとうございます。私は他の読者とのリンクの色を変更する方法を尋ねたがっています。この回答は、他のエンドエージェントを赤に設定しますが、リンクは同じ色のままです。リンクの色を赤に変更するにはどうすればよいですか? – pablo

+0

申し訳ありませんが、私はあなたの質問の*リンク*の色を変更することについての部分を逃した。 (タイトルには、もっと注意が払われているはずでした!)私は簡単な修正のために答えを編集しましたが、もっと良いアプローチがあります。私は数分でもう一度編集します。 –

+0

完了。私はまた、元の混乱の原因を今理解していると思います。「 -with'と 'with'プリミティブを混在させました。私はそれが時々本当に混乱していると認めます。 –

関連する問題