`

娃娃鸭学Ruby-24、操作符

阅读更多
操作符

在Ruby语言中,一个操作符是一个标记。
操作数本身是表达式

操作符的元数  指它的操作数的个数
操作符的优先级

多个同样优先级的操作符,求值顺序由操作符的结合性来决定。
结合性  “L" 表示 从左到右进行求值
           ”R" 表示 从右到左进行求值
           "N"表示  不具有结合性

大多数算术操作符都是左结合的。
求幂操作是右结合的。


1)一元+和一元-
一元-比一元+优先级略低
对应方法名:-@ 和 +@

2)求幂操作**

3)算术操作符: + - * / %

String类 +  :连接操作
            *  :字符串重复操作

4)移位和追加操作符:<< 和 >>
(0b1011<<1).to_s(2) # => "10110"
(ob10110>>2).to_s(2) #=>"101"

5)补,并,交操作符:~ ,& ,| 及^

6)比较操作符: <, <=,> ,>= 和<=>
<=>
  左操作数小于右操作数  返回 -1
              大于                       1
              相等                       0
              不能比较                nil
7)相等性操作符:==,!=,=~,!~和===

8)布尔操作符:&&,||,! ,and,or,not
短路式的

9)范围和Flip-Flops: .. 和...
x+1..x*x
x..y
或 Range.new(x,y)
x...y
或Range.new(x,y,true)

flip-flop
(1..10).each{|x| print x if x==3..x==5}

#prints "3"
(1..10).each{|x| printx if x==3..x>=3}
#prints "34"
(1..10).each{|x| print x if x==3..x>=3}


10) 条件操作符: ?:
唯一的三元操作
?:
第一个操作数的值是 false 或nil  执行第三个操作数

"You have #{n} #{n==1 ? 'message' : 'messages'}"
?:优先级相当低

11)赋值操作符
x=y=z=0
x=(y=(z=0))

12) defined? 操作符
测试操作数是否已经被定义过
#compute f(x) ,but only if f and x are both defined
y=f(x) if defined? f(x)

13)语句修饰符
  rescue 
  if
unless
while
until

print x if x

14)非操作符
()
[]
{}
.和::
;、,和=>
:
*,&和<

2011-4-15 15:42 danny


分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics