я сократил до небольшого примера кода, который у меня есть, который проверяет, имеет ли переменные с именем class-name
значения отведенного ему:Как VALUE? функция работает?
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
возвращает ложное здесь. С другой стороны, если я заполнить недостающие ветви с заданием:
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"
Это возвращает истину для value? 'class-name
. Но в этом втором случае class-name: default-class-name
еще не выполнен.
Я бы подумал, что имя класса не должно существовать в памяти, поэтому value? 'class-name
должно возвращать false. Почему value?
вместо этого возвращает true?
В чем проблема? –
Это четкий вопрос для любых повторителей, если вы не reboler, пропустите это, а не просто голосуйте, что вы не способны понять. –
Может быть, вы должны спросить: «Почему -part - вернуть false, но -part 2- вернуть true?» Вероятно, это не странное поведение. – John