<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh-Hant-TW">
	<id>https://wiki.taigi.ima.org.tw/w/index.php?action=history&amp;feed=atom&amp;title=GNUSmalltalk</id>
	<title>GNUSmalltalk - 修訂紀錄</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.taigi.ima.org.tw/w/index.php?action=history&amp;feed=atom&amp;title=GNUSmalltalk"/>
	<link rel="alternate" type="text/html" href="https://wiki.taigi.ima.org.tw/w/index.php?title=GNUSmalltalk&amp;action=history"/>
	<updated>2026-04-11T11:13:01Z</updated>
	<subtitle>本 wiki 上此頁面的修訂紀錄</subtitle>
	<generator>MediaWiki 1.43.1</generator>
	<entry>
		<id>https://wiki.taigi.ima.org.tw/w/index.php?title=GNUSmalltalk&amp;diff=403352&amp;oldid=prev</id>
		<title>TaiwanTonguesApiRobot：​從 JSON 檔案批量匯入</title>
		<link rel="alternate" type="text/html" href="https://wiki.taigi.ima.org.tw/w/index.php?title=GNUSmalltalk&amp;diff=403352&amp;oldid=prev"/>
		<updated>2025-08-22T10:39:40Z</updated>

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