2011-06-19 5 views
4

返信の優先順位を少し明確にしたいのですが、 ステートメントは一般的な優先順位である のルールに反するようです。例えばスモールトークReturn Precedence

(私が欲しいものである)の発現

^ 2 + 3. 

戻り5それは ^の単項演算子以来、わずか2を返すべきではありません一つはバイナリである+オーバー優先順位が高いのですか? 。

答えて

10

Smalltalkに「単項演算子」はありません。単項メッセージ(「受信者メッセージ」)、2項演算子(「受信者+引数」)、およびn個のキーワードメッセージ(「受信者メッセージ:引数1」)の3つの優先レベルのみが存在する。すべての場合において、受信機が最初に来る。

"^"は演算子ではありませんが、return文を示します。同様に、 "-4"では、 " - "は演算子ではなく数値リテラルの一部です。

+0

だから私はそれを後ろ向きにしていた、私は思った^ 2に送られるメッセージだった。ありがとう、それはそれをクリアした。 – Jatajuuf

+0

'^'はあなたがそれを考えるならthisContextに送るメッセージです(またはthisContextの親)^^ – mathk

+0

squeak 3.9まで、-3のような負のリテラル番号でスペースが受け入れられました。これは、文書化されていないそれが単項演算子とみなされる可能性のある混乱の原因となります。 –

1

Smalltalkの^本当に演算子ですか?私はそれがむしろ予約シンボルだと思う。そして、周囲のメソッドが返ってきたときに、 "ぶら下がった" + 3のときにはどうなりますか?私はreturnステートメントが "通常の" Smalltalkメソッドで起こる最後のステートメントなので、その動作が正しいと思います。

よろしく

+0

私は、演算子/メソッドを同じ意味にすることを意味していました。振る舞いは正しいですが、^の優先順位規則がどのように定義されているか、それが特別扱いかどうかを知りたいのですが。 – Jatajuuf

3

リターン記号、^、少数言語組み込み関数構築物の一つです。 Smalltalkは^記号の後にある式の値を返します。

+0

あまりありません:^記号<<の後の>>式<<の[...] – blabla999

+0

それはもっと意味があります、はい:)編集されました。 – SHODAN

関連する問題