BOO入门/巨集
< BOO入門
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。