为什么我必须使用switch将typeof转换为字符串才能使其正常工作?
这不起作用:
typeof: type? get 'optional
switch typeof [
word! [
print "word"
]
string! [
print "string"
]
]
这有效:
typeof: type? get 'optional
switch to-string typeof [
"word" [
print "word"
]
"string" [
print "string"
]
]
答案 0 :(得分:1)
switch type?/word :optional [ word! [ print "word" ] string! [ print "string" ] ]
OR
switch type? :optional reduce [ word! [ print "word" ] string! [ print "string" ] ]
原因是REBOL没有减少(“评估”)switch语句中的情况。如果没有/word
细化,type?
函数会返回datatype!
,但switch语句会尝试将其与word!
匹配,并且会失败。
我意识到这可能会令人困惑,所以你最好的选择是将类型转换为字符串(就像你所做的那样),或者使用我建议的两种习语之一。我更喜欢第一个,使用type?/word
。