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 年。)