(На данный момент, игнорируя вопрос о том, что вы делаете здесь, это хорошая идея.: P)
Помните, что когда вы передаете block!
в foreach
, он будет связывать слова внутри этого блока во время цикла:
>> foreach [foo bar] ["a" "b"] [print foo print bar]
a
b
Когда вы передаете word!
любого типа, он будет полностью перезаписан и никакие переменные не будут назначены (независимо от того, было ли это слово ранее связано с блоком!):
>> foobarblock: [foo bar]
>> foreach foobarblock ["a" "b"] [print foo print bar]
** Script error: foo has no value
** Where: foreach
** Near: foreach foobarblock ["a" "b"] [print foo print bar]
>> foreach foobarblock ["a" "b"] [print foobarblock]
a
b
Чтобы получить эффект, который вы, похоже, здесь желаете, вам нужно что-то вроде:
>> foreach :foobarblock ["a" "b"] [print foo print bar]
a
b
Тогда поведение будет таким, как вы ожидаете, со словами, связанными в локальном контексте.