我想有选择地修改列表的一些成员,但不是全部,这取决于成员是否满足某些条件。例如,在一个值列表中,我想从所有大于 9 的值中减去 9。
我试过
set nodeext2 map nodeext2 [ifelse-value (? > 9) [? - 9][?]]
但是得到一个“预期为常数”的错误。我也尝试过 if-else 并使用括号。谁能帮我?我觉得好像在某处清楚地说明了这点,但我一直找不到在哪里。
最佳答案
您只需颠倒 map
的顺序论点:记者必须在名单之前。尝试:
set nodeext2 map [ifelse-value (? > 9) [? - 9][?]] nodeext2
您在
ifelse-value
上收到“预期为常量”消息因为编译器期望 map
的第二个参数成为一个列表,因此试图解释 [ifelse-value (? > 9) [? - 9][?]]
作为一个(并且失败,因为列表是由常量组成的,而 ifelse-value
不是)。
关于if-statement - NetLogo 列表和条件修改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21552504/