Tclは、そのコアでは本当に厳しい言語です。 は常に規則に従います。あなたのケースのために、私たちはそのため、このようにそれを分析することができます:
三つの言葉、
set
(すなわち、標準コマンド「変数への書き込み」)、
c
、と私たちはの内容を評価から取得します
set c [$a + $b]
角括弧は[$a + $b]
です。これは、別の3つの単語、a
変数(5
)、+
、およびb
変数(10
)の内容を含む単一のコマンド呼び出しによって形成されるスクリプトです。値が数字のように見えるのは無関係です。ルールはすべてのケースで同じです。
おそらく5
というコマンドがないので、エラーが発生します。あなたは事前にこれをしなかった一方、:
proc 5 {x y} {
return "flarblegarble fleek"
}
を、あなたのスクリプトは、「仕事」だろう、c
変数にいくつかの(明確に定義された)全くのナンセンスの言葉を書きます。幾分数学的な式を評価する場合は、expr
コマンドを使用します。それは、すべての引数(それらの間にスペースを入れて)を連結し、理解された文書化された小さな表現言語を使用して結果を式として評価することです。
FWIWという式の前後には、常にカッコを入れたいと思っています。
あなたが書いたものをあなたが期待するようにする他の方法はありますが、しないでください。彼らは遅いです。あなたが+
最初に入れて喜んでいる場合OTOH、あなたはものが最小の干渉で速く行くことができます:
# Get extra commands available for Lisp-like math...
namespace path ::tcl::mathop
set c [+ $a $b]
あなたは、Lispスタイルのプレフィックス数学のファンではないなら、expr
を使用しています。結局のところ、ほとんどのTclプログラマがやっていることです。
これはまさに私が持っているエラーです。それはなぜそのエラーを返すのですか?どのような操作が実行されますか? – user8469759
'[5 + 10]'は '+'と '10'を引数にして' 5'というコマンドを実行しようとします。エラーが示すように、「5」というコマンドはありません。 –
それは$ aの結果を文字列として解釈しますか? – user8469759