4.6 操作符
了解优先级很重要
位移操作符
(0b1011)<< 1 # ==> "10110" 11 << 1 = 22
(0b10110)>> 2 # ==> "101" 11 << 1 = 5
追加操作符
一些String 、Arrray、还有一些IO库Queue、Logger 都支持追加操作符
message_1 = "hello" #hello
message_2 = [] #empty
message_1 << "world" # append string, message_1 = helloworld
message_2 = message_1 # append a array
STDOUT << message_2 #print the message to standard output stream
4.6.5 与&、或|、非~ 操作符 (全与C++一样)
& 二进制数,相同 0为0,相同1为1, 不同为0 # 0b1010 & 0b1100 => 1000
| 二进制数,相同 0为0,相同1为1, 不同为1 # 0b1010 | 0b1100 => 1110
~ 二进制数, 1变0, 0 变1 # 0b1010 & 0b1100 => 110
^ 异或, 2个操作二进制数对应的位中,仅只有一个为1,才是1
4.6.6 比较操作符 >、 >=、 <、 <= 、 == 、<=>
a <=> b #若a>b ,则返回+1 或 大于0的值;
若a<b ,则返回0 或 小于0的值;
若a与b不能比较,则返回nil
Module 《comparable》
Module 也可以表示和 子类 的关系操作符
Module是Class的超类!
Class A < B #声明 Class A 为Class B的 子类
String < Object #true:String 是Object 细化的对象
Numeric < Object #true:Numeric 是Object 细化的对象
Numeric < Integer #false: Numeric is not more specialized than Integer , Numeric 不是Integer的子类
String < Numeric #nil : string and Numeric are not related
接着是优先级了,代码规范点这个都不用看。