If statement NetLogo列表和条件修改

If statement NetLogo列表和条件修改,if-statement,map,foreach,netlogo,If Statement,Map,Foreach,Netlogo,我想有选择地修改列表中的一些成员,但不是全部,这取决于这些成员是否满足某些条件。例如,在一个值列表中,我想从所有大于9的值中减去9 我试过了 set nodeext2 map nodeext2 [ifelse-value (? > 9) [? - 9][?]] 但得到一个“预期为常数”错误。我也尝试过使用if-else和括号。有人能帮我吗?我觉得这可能是在某个地方说得很清楚,但我找不到地方。你只是颠倒了论点的顺序:报告者必须在列表之前。尝试: set nodeext2 map [ife

我想有选择地修改列表中的一些成员,但不是全部,这取决于这些成员是否满足某些条件。例如,在一个值列表中,我想从所有大于9的值中减去9

我试过了

set nodeext2 map nodeext2 [ifelse-value (? > 9)  [? - 9][?]]

但得到一个“预期为常数”错误。我也尝试过使用if-else和括号。有人能帮我吗?我觉得这可能是在某个地方说得很清楚,但我找不到地方。

你只是颠倒了论点的顺序:报告者必须在列表之前。尝试:

set nodeext2 map [ifelse-value (? > 9)  [? - 9][?]] nodeext2
您在
ifelse值上得到“Expected a constant”消息,因为编译器预期
map
的第二个参数是一个列表,因此试图将
[ifelse值(?>9)[?-9][?]]]
解释为一个(失败是因为列表由常量组成,而
ifelse值
不是常量)