2009-10-11 4 views
1

switchof를 작동 시키려면 왜 typeof를 string으로 형 변환해야합니까?리 볼 스위치 및 유형?

이 작동하지 않습니다

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

REBOL은 간단한 언어이지만 Carl Sassenrath의 주장과는 달리 반드시 쉬운 언어는 아닙니다. :) 간단! = 쉬움. –

+0

다음은 그것이 우아한 언어라고 가정 해 보겠습니다. –

답변

1
switch type?/word :optional [ 
    word! [ print "word" ] 
    string! [ print "string" ] 
]

또는

switch type? :optional reduce [ 
    word! [ print "word" ] 
    string! [ print "string" ] 
]

이유는 REBOL는 "(감소하지 않는다는 것입니다 평가 ") 할 수 있습니다. /word 구체화가 없으면 type? 함수는 datatype!을 반환하지만 switch 문은 word!과 일치하도록 시도하며 실패합니다.

이것이 혼란 스러울 수 있으므로 가장 좋은 방법은 유형을 문자열로 변환하거나 (내가했던 것처럼) 또는 내가 제안한 두 가지 관용구 중 하나를 사용하는 것입니다. 나는 type?/word을 사용하여 첫 번째 것을 선호합니다.

+0

고마워, 너는 Rebol Guru라고 확신한다 : 나는 몰랐다/말은 존재했다 :) –

+0

고마워! 나는 도움이되는 주석 기자가 내 블로그에서 내게 그것을 지적 할 때까지'/ word'에 대해서도 몰랐다. :) –