2016-07-09 4 views
0

プロシージャ内から入力の値を変更できるように、入力をnetlogoプロシージャに渡す方法はありますか?たとえば:あなたはこれを実行すると、出力200は、私は、出力201Netlogo手続き入力:参照による呼び出しは可能ですか?

を持つために(グローバル変数を使用しないと、レポーター手順を使用しない)方法でそれを修正するために

to test 
    let value 200 
    test2 value 
    print value 
end 

to test2 [v] 
    set v v + 1 
end 

たいと思います

+0

いいえ、これは意図的に言語設計上禁止されています。 –

答えて

2

配列やテーブルなどの可変オブジェクトを使用できます。

extensions [table array] 

to test 
    let _a array:from-list n-values 10 [0] 
    increment-aval _a 0 
    print _a 

    let _t table:make 
    let _key "key1" 
    table:put _t _key 0 
    increment-tval _t _key 
    print _t 
end 

to increment-aval [#a #i] 
    let _old array:item #a #i 
    array:set #a #i (1 + _old) 
end 

to increment-tval [#t #key] 
    let _old table:get #t #key 
    table:put #t #key (1 + _old) 
end 

もちろん、必要でない場合は、可変性を使用しない方が良いです。

関連する問題