1

typeof を動作させるために switch を使用して 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"
    ]           
  ]
4

1 に答える 1

1
スイッチの種類?/単語:任意 [
    語![「単語」を印刷]
    ストリング![「文字列」を出力]
]

また

スイッチタイプ?:オプションの削減 [
    語![「単語」を印刷]
    ストリング![「文字列」を出力]
]

その理由は、REBOL が switch ステートメントのケースを削減 (「評価」) しないからです。/word絞り込みを行わないと、type?関数は を返しますdatatype!が、switch ステートメントはこれを と照合しようとしてword!失敗します。

これは混乱を招く可能性があることを認識しているため、(あなたが行ったように) 型を文字列に変換するか、私が提案した 2 つのイディオムのいずれかを使用することをお勧めします。を使用して、最初のものを好みtype?/wordます。

于 2009-10-11T19:18:34.317 に答える