跳至內容
主選單
主選單
移至側邊欄
隱藏
導覽
首頁
近期變更
隨機頁面
MediaWiki說明
Taiwan Tongues 台語維基
搜尋
搜尋
外觀
建立帳號
登入
個人工具
建立帳號
登入
檢視 GNUSmalltalk 的原始碼
頁面
討論
臺灣正體
閱讀
檢視原始碼
檢視歷史
工具
工具
移至側邊欄
隱藏
操作
閱讀
檢視原始碼
檢視歷史
一般
連結至此的頁面
相關變更
特殊頁面
頁面資訊
外觀
移至側邊欄
隱藏
←
GNUSmalltalk
由於以下原因,您無權編輯此頁面:
您請求的操作只有這些群組的使用者能使用:
使用者
、taigi-reviewer、apibot
您可以檢視並複製此頁面的原始碼。
'''GNU Smalltalk'''是 Smalltalk 程式語言的 GNU 計畫實現。 這个實現毋是佮其他 Smalltalk 環境,用文本文件作為程序輸入,並共解說共解說 Smalltalk 代碼。佇這種方式下跤,GNU Smalltalk 表現了閣較親像一種解說器,非傳統 Smalltalk 方式下的一種環境。GNU Smalltalk 包括著真濟自由軟體庫的縛定,包括講 SQLite、libSDL、cairo、gettext 和 Expat 等。 ==簡單例== 下跤的例會當做工課佇 GNU Smalltalk 三更零佮以後版本上。經典的 Hello , World ! 例: GNU Smalltalk 聲明三个文件:` stdin `、` stdout ` 和 ` stderr `,做文件串流類(` FileStream `)的全局實例,並縛定矣傳達予 C 虛擬機的值。對象類(` Object `)定義矣特有於 GNU Smalltalk 的四个方法:` print `、` printNl `、` store ` 和 ` storeNl `。𪜶對接收者做一改 ` printOn : ` 抑是 ` storeOn : ` 至 ` Transcript ` 對象。這个對象是文本搜集的器類(` TextCollector `)唯一實例,伊通常將寫操作委託予 ` stdout `。 一寡基本的 Smalltalk 代碼: 兩个 ` " ` 包圍的是注釋;` $ c ` 是字符常量 ` c `;兩个 `'` 包圍的是字符合,字符合串中的 `''` 是 `'` 伊的轉義序列。 ==搜集== 構造佮使用一个數組: 構造佮使用一个散列表,伊是散列搜集類(` HashedCollection `)的子類即字典類(` Dictionary `)的實例: GNU Smalltalk 佇字符串類(` String `), 和成做伊的超類的數組式搜集類(` ArrayedCollection `)之間,閣介入特有的字符數組類(` CharacterArray `), 伊的 ` % ` 方法,共接收者內底有的特殊轉義序列,替換做由參數予出的搜集中的元素,其中 ` % n ` 予人替代為這个搜集的第 ` n ` 個元素(` 一 <=n <=九 ` 抑是 ` A <=n <=Z `)。 遮予伊的搜集,是佇咧 ` { ` 和 ` } ` 之間包圍的,當前 Smalltalk 變體一般攏提供的動態數組,其中的元素會當佇運行的時間求值。 ==塊佮迵天代器== 參數傳達到是咧共閉包的一塊: 對一个方法返回由兩个閉包構成的一个數組: 遮咧用 ` extend ` 為存的類擴展新方法是 GNU Smalltalk 特有的語法。 下跤的考拉茲猜想例,展示會共兩塊傳達予接收者,而且會結果信息發送轉到調用者: 搜集類(` Collection `)的 ` collect : ` 方法,將接收者的逐个元素傳達予一塊來求值,倒轉來這个結果的搜集。這類似函數式編程語言當中 map 函數。譬如講計算對 ` 一 ` 到 ` 十 ` 的平方: 迵天代類(` Iterable `)定義矣由子類實現的 ` do : ` 方法,共一塊迵天代接收者的每一个元素之上。這嘛予人號做迵天代器。比如迵天代數組佮區間之上: 迵天代類的 ` inject : into : ` 方法,接受一个參數佮一塊二者;伊迵天代接收者每一个元素之上,佇咧其上執行某一个函數並保持結果為一个聚集。這類似函數式編程語言當中 foldl 函數。這个方法是憑藉調用 ` do : ` 方法去實現的。比如講: 佇第一个逝時,這个塊接受 ` 十 `(愛注入的實際參數)做為 ` sum `,和 ` 一 `(這个數組的第一个元素)做元素,結果為著 ` 十一 `。` 十一 ` 來成做佇後一逝的時陣 ` sum `,這个時陣向伊加上 ` 三 ` 得著 ` 十四 `。` 十四 ` 來加上講 ` 五 `,終其尾閣倒轉來 ` 十九 `。 塊會當佮足濟內底起的方法做伙做工課,下跤例向一个文件寫一行文本,才閣讀伊的每一逝並顯示: 文件類(` File `)伊的特有於著 GNU Smalltalk 的 ` name : ` 方法,倒轉來有絕對路徑的文件名。GNU Smalltalk 有特有的文件路徑類(` FilePath `), 伊的 ` withWriteStreamDo : ` 方法,著接收者調用 ` writeStream ` 方法拍開一个干焦寫的文件串流類(` FileStream `)實例,咧其實調用一塊,並且佇這塊的動態範圍結束處保證(` ensure : `)關起來這个串流;伊的 ` readStream ` 方法,佇接收者頂懸拍開一个干焦讀的文件串流類(` FileStream `)實例。 串流類(` Stream `)伊的特有於著 GNU Smalltalk 的 ` linesDo : ` 方法,對伊的接收者每一逝攏有值伊的參數角一擺。佇咧 GNU Smalltalk 中,文件串流類(` FileStream `)的超類,不再是做為可定位串流類(` PositionableStream `)子類的讀寫串流類(` ReadWriteStream `), 是其實特有的做串流類(` Stream `)子類的文件描寫符類(` FileDescriptor `), 伊的 ` close ` 方法關起來這个文件。 ==類== GNU Smalltalk 建立新類採用特有的語法形式: 類似的,為存的類擴展新方法採用特有的語法形式: 佇咧 Smalltalk 有關冊內底有一个定定看著版式約定,共一个類當中的方法引用 ` 徛名 > > 方法名 `,這毋是啦 Squeak / Pharo 語法的一部份,GNU Smalltalk 將 ` 徛名 class > > 方法名 ` 做定義類方法的語法形式。 下跤的代碼定義叫做 ` Person ` 的一个類似,這个類有兩个實例變量 ` name ` 和 ` age `,𪜶有家己的變化佮子佮訪問子。定義有兩个關鍵字參數的類方法,用來創建新的類實例。單獨用的 ` age ` 來做較的 ` < ` 方法,通過對 ` Magnitude ` 派生,這个類自動繼承了所有的其他較方法的定義。這類閣通過覆寫 ` printOn : ` 的方式,定製這个對象的列印(` print `)/ 顯示(` display `)方式: 遮咧用 ` asSortedCollection ` 方法對搜集進行排序,然後用 ` reverse ` 方法來做反轉。最後結果是揤 ` age ` 反序列印三个人的批信: ==異常== 欲發起會當掠著的異常,愛調用異常類(` Exception `)佮其子類的 ` signal ` 抑是 ` signal : ` 方法。錯誤類(` Error `)表示袂當恢復的致命錯誤,警告類(` Warning `)表示重要但是會當恢復的錯誤,停機類(` Halt `)表示通常是空隙(bug)的會當恢復錯誤。比如講: 異常通過塊閉包(` BlockClosure `)的 ` on : do : ` 方法來處理,閣會使干焦掠著特定的各樣(佮𪜶的子類): 處理器仔句使用伊得著的異常對象,退出抑是恢復一塊;退出是預設的,但是嘛會當顯式的指示: 佇咧因為各樣欲進入調試器,會當調用對象類(` Object `)的 ` halt ` 方法,抑是增加一个消息參數的 ` halt : ` 方法;這兩个人實際上調用著對象類的 ` error : ` 方法,伊通過原始操作停止執行佮抑是啟動調試器,並且展示這个錯誤消息: ==參見== * Ruby 語法 * GLASS ==引用== ==外部連結== * 官方網站 [[分類: 待校正]]
返回到「
GNUSmalltalk
」。