我想稍微說明返回 聲明的優先級,這看起來違背了一般優先級 規則。Smalltalk Return Precedence
例如表達
^ 2 + 3.
收益5(這是我想要的),但不應該它,因爲一元運算符 其中^是一個在+是二進制具有更高的優先級僅2返回? 。
我想稍微說明返回 聲明的優先級,這看起來違背了一般優先級 規則。Smalltalk Return Precedence
例如表達
^ 2 + 3.
收益5(這是我想要的),但不應該它,因爲一元運算符 其中^是一個在+是二進制具有更高的優先級僅2返回? 。
Smalltalk中沒有「一元運算符」。只有3個優先級別:一元消息(「接收者消息」),二元運算符(「接收者+參數」)和n元關鍵字消息(「接收者消息:參數1」)。在所有情況下,接收器都是第一個。
所以「^」不是一個運算符,而是表示一個返回語句。同樣,在「-4」中,「 - 」不是操作符,而是數字文字的一部分。
Smalltalk的^真的是運營商?我想這是一個保留的符號。那麼當週圍的方法返回時,「懸掛」+ 3會發生什麼?我認爲這種行爲是正確的,因爲return語句是在「正常」Smalltalk方法中發生的最後一個聲明。
問候
我的意思是互換地暗示操作符/方法。行爲是正確的,但我想知道如何定義^的優先規則,以及它是否被特殊處理。 – Jatajuuf
所以我把它倒過來了,我一直在想^是一個要發送給2的消息。謝謝,這清除了它。 – Jatajuuf
'^'是發送給thisContext的消息,如果你想到它(或thisContext父項)^^ – mathk
請注意,在吱吱聲3.9之前,一個空格被接受在否定字面數中,例如-3。這被刪除,因爲沒有記錄並且可能被視爲一元運營商,這是一個混亂的根源。 –