Smalltalk 程式設計/語法
Smalltalk 擁有所有計算機語言中最簡單的語法之一。有 3 種不同的方法呼叫型別 - 一元、二元和 N 元關鍵字。每種方法呼叫規則都從左到右掃描優先順序。像往常一樣,優先順序可以用括號覆蓋。
1. 一元方法。可以像 **display redrawEverything** 一樣簡單;物件 **display** 會查詢其 **redrawEverything** 方法以進行無條件重繪,並執行它。一元方法及其作用的物件都是不以冒號結尾的字母數字詞。當您看到多個這樣的詞連續出現時,左側的詞是物件,其餘的是方法呼叫的序列。
display redrawEverything.
2. 二元方法。在 **myNumber + 5.** 中,物件 **myNumber** 被告知查詢 **+** 方法,並使用 5 作為引數執行它。在這裡,引數被丟棄,**:=** 賦值將在稍後進行。二元方法名稱是 1 或 2 個特殊字元;它們只存在於數學和邏輯方程式的常見嫌疑人中。數學運算子沒有特殊的優先順序,您必須按想要的方式陳述它們,或者使用括號。
myNumber + 5.
3. 關鍵字方法。這是 Smalltalk 與大多數其他程式語言的不同之處。在 **display drawFromX:1 fromY:1 toX:50 toY:100.** 中,display 被呼叫了一個方法和 4 個引數。方法的名稱是 **drawFromX:fromY:toX:toY: **,引數按位置傳遞到方法中。如果要呼叫另一個關鍵字方法而不會將兩者混合在一起,可以使用逗號運算子、括號,或者只是將結果帶到新的語句中。
display drawFromX: 1 fromY: 1 toX: 50 toY: 100.
一個語句可以選擇以賦值開頭,至少有一個起始物件,並向該物件傳送至少一個方法。語句以句點結束。
| myNumber |
myNumber := 3 + 5. "the period ends this statement"
display drawFromX: 1 fromY: 1 toX: 50 toY: 100.
一個 **[塊]** 是一個帶有括號的語句集,它們作為一個單個物件捆綁在一起,可以透過流程控制式方法觸發。在 **4 < 5 ifTrue: [ Transcript print: '4 is less than 5!' ].** 中,4<5 評估為布林物件 **true**,它總是執行透過 **ifTrue: **方法傳遞的塊。
4 < 5 ifTrue: [ Transcript print:'4 is less than 5!' ].