BOO大全/把Boo當作計算機
把Boo當作計算器
编辑Guido van Rossum 在他的 python 書裡,以在互動 Python 提示裡輸入運算式的方式帶領人們進入 Python 的世界。這是個很好的建議,而我們最好也以同樣的方式開始學習 Boo。Boo (與 Python) 都提供了足以作為計算器的良好互動環境,這環境除了一般的四則運算之外,也可以使用十六進制與位元運算。即便你是頑固的 C++ 或 C# 開發者,Boo 提示也是很有幫助的。 Boo互動選項
>>> 2.5+2*(1 + 0.234/4) (System.Double) 4.617 >>> 23 + 24 - 4 (System.Int32) 43 >>> 0xFF (Int32) 255 >>> 20/3 (System.Int32) 6 >>> 20/3.0 (System.Double) 6.66666666666667
Boo 的計算是很一般的計算器運算;計算時會自動使用運算式裡可容納最多位數的型別來呈現結果。浮點運算通常以雙精度計算並且整數也會自動被轉換。
看看整數運算,明顯的會整除。
不靠好用的函數,工程計算器將無法完成。在 CLI 裡,大部分的函式庫都在 System 命名空間,而數學函式都在 Math 命名空間。使用 import 述句就可以使用這些命名空間;當然,類別也被引入,省去我們打字的麻煩。
>>> import System >>> Math.Sin(1.4) (System.Double) 0.98544972998846 >>> 2*Math.PI (System.Double) 6.28318530717959 >>> import System.Math >>> Sin(PI/2) (System.Double) 1 >>> Min(10,20) (System.Int32) 10 >>> Min(1.2,0.8) (System.Double) 0.8
這些函式除了某些特定函數,如 Min 和 Max 之外,大部分都以雙精度運作。Min、Max 例外的原因是因為提供了不同數值型別的覆載函數。要看 Math (或任何類別) 裡面有什麼的話,可以使用內建函式 help:
>>> help(Math) class Math(object): public static E as double public static PI as double static def Abs(value as short) as short static def Abs(value as sbyte) as sbyte .....
此外也有位元運算,這與 C 家族語言很類似。而 Convert.ToString() 在要看十六進制結果時很有用 (第二個引數表明進制)。
>>> 1 << 2 (System.Int32) 4 >>> 16 >> 1 (System.Int32) 8 >>> 0xFFFF & 0x0FF0 (System.Int32) 4080 >>> Convert.ToString(4080,16) (System.String) 'ff0'
另外一個很好的特性是,可以在寫長串數字時,使用 _ 來適當的為數字分組。
>>> 20_000 (Int32) 20000 >>> 20_000_000.2 (Double) 20000000.2
使用者自訂函式也很容易定義:
>>> def hex(n as int): ... print Convert.ToString(n,16) ... >>> hex(0xFF << 2) 3fc
Boo (與Python) 都需要對函式主體縮排,所以在輸入 print 述句之前,先按下 tab ;要結束的話,就按下 Enter (是的,這會出現空白行)。不像 Python,Boo 通常會要求你宣告引數的型別 (請參見 函式) (譯註:事實上可以不用,我想或許是 Boo 版本問題。畢竟作者寫這文章時,是在 2005 年。)