2017-05-23 29 views
0

以下是造成問題的一小部分代碼。將列表轉換爲foreach循環中的代理程序

to update-trustt 
    let rank-tvmratio sort-on [tvmratio] turtles 
    foreach rank-tvmratio tvmratio -> ask rank-tvmratio [set trustt (trustt + tvmratio)] 
end 

在這段代碼,"rank-tvmratio"應該帶來名單看起來像: [(龜56)(23龜)...(龜9)]

我想要做的是讓這些龜分別更新"trustt"變量 ,它寫在第3行。

以下Bryan的建議我插入"->"並指定「誰」在做「什麼」。

不過,有一個新的錯誤消息"Nothing name -> has been defined"

我怎樣才能解決這個問題?我需要你明智的建議。

(實際上是可變tvmratio從程序[R的到來,使用RNetLogo包是有一些做這個?)

謝謝

+0

你的'foreach'語法是錯誤的。你使用的是什麼版本的NetLogo? – Alan

+0

我使用最新版本6.0.1,我該如何修復語法? –

+0

查看文檔。 'trustt'是一個海龜變量嗎?這次更新後你想要什麼?代碼太難以分辨。 – Alan

回答

1

我想這大概是想讓你正在尋找:

to update-trustt 
    let rank-tvmratio sort-on [tvmratio] turtles 
    foreach rank-tvmratio [ t -> 
    ask t [ 
     set trustt (trustt + rank-tvmratio) 
    ] 
    ] 
end 

你的代碼有幾個問題。首先,給予foreach的命令需要包含一個參數。你用->語法來做到這一點。在->之前的t(對於龜)是列表中的每個項目將被傳入的變量。其次,您需要明確詢問t,因爲foreachask不同,沒有代理運行命令,它只是運行命令,並且一次傳遞一個項目作爲命令的參數。

+0

抱歉,謝謝你,Bryan。仍然這個解決方案不能解決現存的問題。我不知道爲什麼。所以我不能接受它作爲一個有沒有其他的方法可以看到這個? –

+0

啊,woops,我在上面有一個輸入錯誤,'set set trustt'行末尾有一個錯誤']'但是,你不應該得到''沒有名字 - >有蜜蜂n定義「'。你確定你使用的是6.0.1嗎? –

+0

我解決了這個問題〜!感謝Bryan〜!!!! :) –