2017-05-23 40 views
0

我試圖使用ifelse語句向全局變量「space-death?」提供條件。在netlogo界面上作爲交換機實現。在代碼中使用ifelse語句並切換到netlogo中的接口

to Pass-Away 
    ifelse space-death? [ 
    ask turtles[ Pass-Away-Space ] 
    ask turtles[ Pass-Away-Time] 
    ] 
    ] 
end 

在代碼中,我實現了一個海龜死亡的過程被稱爲「傳遞與千尋」,其運行時,會詢問是否空間死亡開關在界面的NetLogo打開。如果空間死亡開關打開,那麼它會要求海龜呼叫並運行另一個名爲「Pass-Away-Space」的netlogo過程塊,如果不是,通過調用另一個程序塊稱爲「Pass-Away-時間。」

不過,我收到以下錯誤消息:

IFELSE預計三個輸入,一個TRUE/FALSE,命令塊和命令塊

一個能看到我可能出錯了,並相應地更正了這些代碼。另外,如果有一個更好的基於代碼的方式來實現這個邏輯,而不是全局接口,請讓我盡情享受您的迴應。

+1

把''''放在你的兩個'ask'命令之間。 (另外,我建議移動這個proc之外的'ask turtles',使它成爲一個海龜proc。) – Alan

+0

謝謝@Alan。我移動了問龜,但是現在似乎我的嵌入式過程「Pass-Away-Space」出現了問題,我相信您的專業知識有一個快速解決方案。以下代碼的錯誤讀爲「期望的輸入是一個數字,但得到了一個列表(#s)」:'Pass-Away-Space ;請求龜龜讓機會1-exp(-1 *死亡率* [距離啓動補丁龜]) 如果機會> = 1【模具 設置的死計數死計數+ 1 ] ;] end' – nigus21

+0

這是越來越太難在註釋中討論。我將發佈說明性代碼作爲答案。 – Alan

回答

1
globals [space-death?] 

to setup 
    ca 
    set space-death? true 
    crt 100 
end 

to go 
    ask turtles [pass-away] 
end 

to pass-away 
    ifelse space-death? [ 
    Pass-Away-Space 
    ][ 
    Pass-Away-Time 
    ] 
end 

to pass-away-space 
    ;your code here 
end 

to pass-away-time 
    ;your code here 
end