Я сократил до небольшого примера мой код, который проверяет, имеет ли переменная с именем class-name
присвоенное ей значение:
ask-params: function [
config-file [file!]
default-class-name
default-fields
] [
probe value? 'class-name
input
either (value? 'class-name) [
probe class-name
] [
;-- omit code in this branch for now
]
]
ret-block: ask-params %simple-class.params.txt "Person" "First Name, Last Name"
Выражение value? 'class-name
возвращает falseВот.С другой стороны, если я заполню недостающую ветку с помощью присваивания:
ask-params: function [
config-file [file!]
default-class-name
default-fields
] [
probe value? 'class-name
input
either (value? 'class-name) [
probe class-name
] [
class-name: default-class-name
]
]
ret-block: ask-params %simple-class.params.txt "Person" "First Name, Last Name"
Это вернет true для value? 'class-name
.Но во втором случае class-name: default-class-name
даже еще не выполняется.
Я думаю, что имя класса не должно существовать в памяти, поэтому value? 'class-name
должно возвращать false.Почему value?
вместо этого возвращает true?