BOO入門/巨集
< BOO入門
(重定向自BOO/Macros)BOO入門 > 巨集 (上一章:Generators 下一章: 鴨子類別型)
print Macro
编辑print Macro 可以在螢幕上顯示一個或多個物件。
呼叫 print Macro 的方法有兩種:
- 一個引數
- 兩個或多個引數
// print 範例
print "Hello there"
print "Hello", "there"
輸出結果
Hello there Hello there
在第二行你可以看到,除了最後一個引數以外,每印完一個引數,都會接著印出一個空白,然後繼續。
所以,這兩行其實有同樣的結果。
assert Macro
编辑assert Macro 會確認條件必須為真,否則的話,會提出 AssertionFailedException。
assert 可以接受一個或兩個引數。第一個引數必須是 boolean 條件,第二個引數,不是必要但必須為字串,在條件為 false 時會被印出。
// assert 範例
assert true // 永遠通過
assert false, "message" // 永遠失敗
輸出結果
Boo.Lang.Runtime.AssertionFailedException: message at Tutorial.Main(String[] argv)
譯註:一般 assert 都是在開發的時候,用來檢查引數是否符合函數開發者的預設條件。
using Macro
编辑using Macro 可以接受任何數目的引數。
主要用來確保在區塊內的代碼完成後,物件能儘快被釋放掉。
宣告引數的形式有三種:
- <object>
- <object> = <expression>
- <expression>
這三種方法都會檢查物件是否實作 IDisposable 介面,這樣在代碼結束後,才能呼叫指定物件的 IDisposable.Dispose 方法。
// using 範例
import System.IO
using w = StreamWriter("test.txt"):
w.WriteLine("Hello there!")
這個例子會建立一個檔案:test.txt,並進行寫入。在 using 區塊結束後儘快將檔案關閉。
lock Macro
编辑在多執行緒環境下,lock Macro 保證在同一時間其他的物件不會使用到指定的物件,以避免資料毀損。
lock 需要一個以上的引數,施行時,會將所有引數都 lock 住。
// lock 範例
lock database:
database.Execute("""
UPDATE messages
SET
id = id + 1""")
debug Macro
编辑debug Macro 與 print 一樣,差別在於 debug Macro 使用 System.Dianostics.Debug 輸出,而 print Macro 使用 System.Console。
自訂Macro
编辑你可以參考這篇文章:Custom Macros。