设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 1505|回复: 5
打印 上一主题 下一主题

关于运算符

 关闭 [复制链接]

Lv1.梦旅人

梦石
0
星屑
55
在线时间
0 小时
注册时间
2007-7-2
帖子
14
跳转到指定楼层
1
发表于 2007-7-2 22:22:33 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
-(单项)  +(单项)  !  ~  <<  >>  &  |  ^  <=>  ===  =~  !~

这些运算符有什么用?

本贴由论坛斑竹絮儿认可答案,如楼主认为问题未解决,请重新将此贴编辑为“有事请教”,并回帖叙述疑点即可~ ^-^

Lv1.梦旅人

梦石
0
星屑
55
在线时间
0 小时
注册时间
2007-7-2
帖子
14
6
 楼主| 发表于 2007-7-3 19:04:30 | 只看该作者
看不懂啊{/dk}
回复 支持 反对

使用道具 举报

Lv3.寻梦者 (暗夜天使)

精灵族の天使

梦石
0
星屑
1707
在线时间
3039 小时
注册时间
2007-3-16
帖子
33731

开拓者贵宾

5
发表于 2007-7-2 23:02:50 | 只看该作者

  1. 运算符表达式
  2. 赋值
  3. 自运算
  4. 多重赋值
  5. and
  6. or
  7. not
  8. 条件运算符
  9. 例子:

  10. 1+2*3/4

  11. 为了便于编程,有些方法调用和控制结构是以运算符的形式出现的。Ruby 语言中有下列运算符。

  12. 高     ::
  13.        []
  14.        **
  15.        -(单项)  +(单项)  !  ~
  16.        *  /  %
  17.        +  -
  18.        << >>
  19.        &
  20.        |  ^
  21.        > >=  < <=
  22.        <=> ==  === !=  =~  !~
  23.        &&
  24.        ||
  25.        ..  ...
  26.        ?:(条件运算符)
  27.        =(+=, -= ... )
  28.        not
  29. 低     and or

  30. 左侧的“高”和“低”表示运算符的优先度。例如“&&”的优先度要高于“||”,如下所示。

  31. a && b || c   # => (a && b) || c
  32. a || b && c   # =>  a || (b && c)

  33. 大部分运算符都是些特殊形式的方法调用,但有些运算符被嵌入在语言之中,无法进行重定义。

  34. 能够重定义的运算符(方法)

  35. +@、-@ 表示单项运算符 +、-,在方法定义等场合中可以使用这种表示法。

  36. |  ^  &  <=>  ==  ===  =~  >   >=  <   <=   <<  >>
  37. +  -  *  /    %   **   ~   +@  -@  []  []=  `

  38. 不能重定义的运算符(控制结构)

  39. 由多个运算符组合而成的自运算运算符、“!=”以及“!~”是不能重定义的。

  40. =  ?:  ..  ...  !  not  &&  and  ||  or  ::

  41. 赋值例子:

  42. foo = bar
  43. foo[0] = bar
  44. foo.bar = baz

  45. 语法:

  46. 变量 '=' 表达式
  47. 常量 '=' 表达式
  48. 表达式 '['表达式..']' '=' 表达式
  49. 表达式 '.' 标识符 '=' 表达式

  50. 我们使用赋值表达式向变量等对象进行赋值。赋值也可以用作局部变量和常数的声明。赋值表达式的左边必须是下列之一。

  51. 变量

  52. 变量 '=' 表达式

  53. 若左边是变量的话,就将表达式的计算值代入其中。

  54. 数组调用

  55. 表达式1 '[' 表达式2 ... ']' '=' 表达式n

  56. 先计算表达式 1 得到一个对象,再把从表达式 2 到表达式 n 作为参数,来调用该对象的“[]=”方法。

  57. class C
  58.   def initialize
  59.     @ary = [0,1,2,3,4,5,6,7]
  60.   end
  61.   def [](i)
  62.     @ary[i * 2]
  63.   end
  64.   def []=( i, v )
  65.     @ary[i * 2] = v
  66.   end
  67. end
  68. c = C.new
  69. p c[3]      # 变成 c.[]( 3 ), 结果为6
  70. p c[3] = 1  # 变成 c.[]=(3,1),结果为1

  71. 属性调用

  72. 表达式1 '.' 标识符 '=' 表达式2

  73. 计算表达式 1 得到一个对象,再以表达式 2 为参数来调用该对象的“标识符=”方法。

  74. class C
  75.   def foo
  76.     @foo
  77.   end
  78.   def foo=( v )
  79.     @foo = v
  80.   end
  81. end
  82. c = C.new
  83. c.foo = 5   # 变成 c.foo=( 5 )
  84. p c.foo     # => 5

  85. 还可以使用 attr_accessor 来定义属性。

  86. class C
  87.   attr_accessor :foo
  88. end
  89. c = C.new
  90. c.foo = 5   # 变成 c.foo=( 5 )
  91. p c.foo     # => 5

  92. 自运算
  93. 例子:

  94. foo += 12       # foo = foo + 12
  95. foo *= 3        # foo = foo * 3

  96. 语法:

  97. 表达式1 op= 表达式2     # 表达式 1 等同于普通赋值表达式左边的部分

  98. op 就是下列中的某一个。运算符与 = 之间不留间隔。

  99. +, -, *, /, %, **, &, |, ^, <<, >>, &&, ||

  100. 这种赋值形式和下面运算

  101. 表达式1 = 表达式1 op 表达式2

  102. 等同。

  103. 多重赋值
  104. 例子:

  105. foo, bar, baz = 1, 2, 3
  106. foo, = list()
  107. foo, *rest = list2()

  108. 语法:

  109. 表达式 [',' [ 表达式 ',' ... ] ['*' [ 表达式 ]]] = 表达式 [, 表达式 ... ]['*' 表达式 ]
  110. '*' [ 表达式 ] = 表达式 [, 表达式 ... ]['*' 表达式 ]

  111. 多重赋值是指,在多个表达式以及数组中同时进行的赋值。左边的各个表达式必须是可以被赋值的。若右边只有一个表达式时,则将该表达式的计算值转为数组后,再把数组中的各个单元依次赋值给左边。若右边数组单元的数量超过左边的话,将忽略多余的数组单元。若右边数组单元个数不足的话,将向左边多余的单元中代入 nil。

  112. 若左边最后一个表达式前带 * 的话,则将右边多余的单元以数组的形式代入这个带 * 的表达式中。若右边没有多余单元的话,就把空数组代入其中。

  113. foo, bar  = [1, 2]      # foo = 1; bar = 2
  114. foo, bar  = 1, 2        # foo = 1; bar = 2
  115. foo, bar  = 1           # foo = 1; bar = nil
  116. foo, bar  = 1, 2, 3     # foo = 1; bar = 2
  117. foo       = 1, 2, 3     # foo = [1, 2, 3]
  118. *foo      = 1, 2, 3     # foo = [1, 2, 3]
  119. foo, *bar = 1, 2, 3     # foo = 1; bar = [2, 3]

  120. and例子:

  121. test && set
  122. test and set

  123. 语法:

  124. 表达式 '&&' 表达式
  125. 表达式 and 表达式

  126. 首先计算左边,若结果为真就接着计算右边。and 运算符的作用相同但优先度更低。将包含 and 的表达式作为某方法的参数时,必须使用双层括号。

  127. or例子:

  128. demo || die
  129. demo or die

  130. 语法:

  131. 表达式 '||' 表达式
  132. 表达式 or 表达式

  133. 首先计算左边,若结果为伪就接着计算右边。or 运算符的作用相同但优先度更低。将包含 or 的表达式作为某方法的参数时,必须使用双层括号。

  134. not例子:

  135. ! me
  136. not me
  137. i != you

  138. 语法:

  139. '!' 表达式
  140. not 表达式

  141. 若表达式值为真就返回伪,若表达式值为伪则返回真。

  142. 也可以使用下面的语法。

  143. 表达式 '!=' 表达式          # 等同于 !(表达式 == 表达式)
  144. 表达式 '=~' 表达式          # 等同于 !(表达式 =~ 表达式)

  145. 条件运算符例子:

  146. obj == 1 ? foo : bar

  147. 语法:

  148. 表达式1 ? 表达式2 : 表达式3

  149. 根据表达式 1 的结果,选择返回表达式 2 或表达式 3。它与

  150. if 表达式1 then 表达式2 else 表达式3 end

  151. 完全相同。
复制代码

这是f1里面的搜索结果,关于表达式。
请仔细看看。
p.s.如果还有不懂得话,请按f1看看其他说明。 [LINE]1,#dddddd[/LINE]系统信息:本贴由版主絮儿认可为正确答案,66RPG感谢您的热情解答~
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
1
星屑
916
在线时间
101 小时
注册时间
2006-3-27
帖子
1081
4
发表于 2007-7-2 22:43:47 | 只看该作者
怎么有几个- -我也没看过
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
55
在线时间
0 小时
注册时间
2007-7-2
帖子
14
3
 楼主| 发表于 2007-7-2 22:41:46 | 只看该作者
上帝啊,指引迷途的我吧!
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
55
在线时间
0 小时
注册时间
2007-7-2
帖子
14
2
 楼主| 发表于 2007-7-2 22:22:33 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
-(单项)  +(单项)  !  ~  <<  >>  &  |  ^  <=>  ===  =~  !~

这些运算符有什么用?

本贴由论坛斑竹絮儿认可答案,如楼主认为问题未解决,请重新将此贴编辑为“有事请教”,并回帖叙述疑点即可~ ^-^
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2025-9-21 17:29

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表