日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

中國最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2

ruby教程

Ruby 運算符

閱讀 (2166)

Ruby 運算符

Ruby 支持一套豐富的運算符。大多數運算符實際上是方法調用。例如,a + b 被解釋為 a.+(b),其中指向變量 a 的 + 方法被調用,b 作為方法調用的參數。

對于每個運算符(+ - * / % ** & | ^ << >> && ||),都有一個相對應的縮寫賦值運算符(+= -= 等等)。

Ruby 算術運算符

假設變量 a 的值為 10,變量 b 的值為 20,那么:

運算符描述實例
+加法 - 把運算符兩邊的操作數相加 a + b 將得到 30
-減法 - 把左操作數減去右操作數 a - b 將得到 -10
*乘法 - 把運算符兩邊的操作數相乘 a * b 將得到 200
/除法 - 把左操作數除以右操作數 b / a 將得到 2
%求模 - 把左操作數除以右操作數,返回余數 b % a 將得到 0
**指數 - 執行指數計算 a**b 將得到 10 的 20 次方

Ruby 比較運算符

假設變量 a 的值為 10,變量 b 的值為 20,那么:

運算符描述實例
==檢查兩個操作數的值是否相等,如果相等則條件為真。 (a == b) 不為真。
!=檢查兩個操作數的值是否相等,如果不相等則條件為真。 (a != b) 為真。
>檢查左操作數的值是否大于右操作數的值,如果是則條件為真。 (a > b) 不為真。
<檢查左操作數的值是否小于右操作數的值,如果是則條件為真。 (a < b) 為真。
>=檢查左操作數的值是否大于或等于右操作數的值,如果是則條件為真。 (a >= b) 不為真。
<=檢查左操作數的值是否小于或等于右操作數的值,如果是則條件為真。 (a <= b) 為真。
<=>聯合比較運算符。如果第一個操作數等于第二個操作數則返回 0,如果第一個操作數大于第二個操作數則返回 1,如果第一個操作數小于第二個操作數則返回 -1。 (a <=> b) 返回 -1。
===用于測試 case 語句的 when 子句內的相等。 (1...10) === 5 返回 true。
.eql?如果接收器和參數具有相同的類型和相等的值,則返回 true。 1 == 1.0 返回 true,但是 1.eql?(1.0) 返回 false。
equal?如果接收器和參數具有相同的對象 id,則返回 true。如果 aObj 是 bObj 的副本,那么 aObj == bObj 返回 true,a.equal?bObj 返回 false,但是 a.equal?aObj 返回 true。

Ruby 賦值運算符

假設變量 a 的值為 10,變量 b 的值為 20,那么:

運算符描述實例
=簡單的賦值運算符,把右操作數的值賦給左操作數 c = a + b 將把 a + b 的值賦給 c
+=加且賦值運算符,把右操作數加上左操作數的結果賦值給左操作數 c += a 相當于 c = c + a
-=減且賦值運算符,把左操作數減去右操作數的結果賦值給左操作數 c -= a 相當于 c = c - a
*=乘且賦值運算符,把右操作數乘以左操作數的結果賦值給左操作數 c *= a 相當于 c = c * a
/=除且賦值運算符,把左操作數除以右操作數的結果賦值給左操作數 c /= a 相當于 c = c / a
%=求模且賦值運算符,求兩個操作數的模賦值給左操作數 c %= a 相當于 c = c % a
**=指數且賦值運算符,執行指數計算,并賦值給左操作數 c **= a 相當于 c = c ** a

Ruby 并行賦值

Ruby 也支持變量的并行賦值。這使得多個變量可以通過一行的 Ruby 代碼進行初始化。例如:

a = 10
b = 20
c = 30

使用并行賦值可以更快地聲明:

a, b, c = 10, 20, 30

并行賦值在交換兩個變量的值時也很有用:

a, b = b, c

Ruby 位運算符

位運算符作用于位,并逐位執行操作。

假設如果 a = 60,且 b = 13,現在以二進制格式,它們如下所示:

a = 0011 1100

b = 0000 1101

-----------------

a&b = 0000 1100

a|b = 0011 1101

a^b = 0011 0001

~a  = 1100 0011

下表列出了 Ruby 支持的位運算符。

運算符描述實例
&如果同時存在于兩個操作數中,二進制 AND 運算符復制一位到結果中。 (a & b) 將得到 12,即為 0000 1100
|如果存在于任一操作數中,二進制 OR 運算符復制一位到結果中。 (a | b) 將得到 61,即為 0011 1101
^如果存在于其中一個操作數中但不同時存在于兩個操作數中,二進制異或運算符復制一位到結果中。 (a ^ b) 將得到 49,即為 0011 0001
~二進制補碼運算符是一元運算符,具有"翻轉"位效果。 (~a ) 將得到 -61,即為 1100 0011,2 的補碼形式,帶符號的二進制數。
<<二進制左移運算符。左操作數的值向左移動右操作數指定的位數。 a << 2 將得到 240,即為 1111 0000
>>二進制右移運算符。左操作數的值向右移動右操作數指定的位數。 a >> 2 將得到 15,即為 0000 1111

Ruby 邏輯運算符

下表列出了 Ruby 支持的邏輯運算符。

假設變量 a 的值為 10,變量 b 的值為 20,那么:

運算符描述實例
and稱為邏輯與運算符。如果兩個操作數都為真,則條件為真。 (a and b) 為真。
or稱為邏輯或運算符。如果兩個操作數中有任意一個非零,則條件為真。 (a or b) 為真。
&&稱為邏輯與運算符。如果兩個操作數都非零,則條件為真。 (a && b) 為真。
||稱為邏輯或運算符。如果兩個操作數中有任意一個非零,則條件為真。 (a || b) 為真。
!稱為邏輯非運算符。用來逆轉操作數的邏輯狀態。如果條件為真則邏輯非運算符將使其為假。 !(a && b) 為假。
not稱為邏輯非運算符。用來逆轉操作數的邏輯狀態。如果條件為真則邏輯非運算符將使其為假。 not(a && b) 為假。

Ruby 三元運算符

有一個以上的操作稱為三元運算符。第一個計算表達式的真假值,然后根據這個結果決定執行后邊兩個語句中的一個。條件運算符的語法如下:

運算符描述實例
? :條件表達式如果條件為真 ? 則值為 X : 否則值為 Y

Ruby 范圍運算符

在 Ruby 中,序列范圍用于創建一系列連續的值 - 包含起始值、結束值(視情況而定)和它們之間的值。

在 Ruby 中,這些序列是使用 ".." 和 "..." 范圍運算符來創建的。兩點形式創建的范圍包含起始值和結束值,三點形式創建的范圍只包含起始值不包含結束值。

運算符描述實例
..創建一個從開始點到結束點的范圍(包含結束點) 1..10 創建從 1 到 10 的范圍
...創建一個從開始點到結束點的范圍(不包含結束點) 1...10 創建從 1 到 9 的范圍

Ruby defined? 運算符

defined? 是一個特殊的運算符,以方法調用的形式來判斷傳遞的表達式是否已定義。它返回表達式的描述字符串,如果表達式未定義則返回 nil

下面是 defined? 運算符的各種用法:

用法 1

defined? variable # 如果 variable 已經初始化,則為 True

例如:

foo = 42
defined? foo    # => "local-variable"
defined? $_     # => "global-variable"
defined? bar    # => nil(未定義)

用法 2

defined? method_call # 如果方法已經定義,則為 True

例如:

defined? puts        # => "method"
defined? puts(bar)   # => nil(在這里 bar 未定義)
defined? unpack      # => nil(在這里未定義)

用法 3

# 如果存在可被 super 用戶調用的方法,則為 True
defined? super

例如:

defined? super     # => "super"(如果可被調用)
defined? super     # => nil(如果不可被調用)

用法 4

defined? yield   # 如果已傳遞代碼塊,則為 True

例如:

defined? yield    # => "yield"(如果已傳遞塊)
defined? yield    # => nil(如果未傳遞塊)

Ruby 點運算符 "." 和雙冒號運算符 "::"

您可以通過在方法名稱前加上模塊名稱和一條下劃線來調用模塊方法。您可以使用模塊名稱和兩個冒號來引用一個常量。

:: 是一元運算符,允許在類或模塊內定義常量、實例方法和類方法,可以從類或模塊外的任何地方進行訪問。

請記住:在 Ruby 中,類和方法也可以被當作常量。

您只需要在表達式的常量名前加上 :: 前綴,即可返回適當的類或模塊對象。

如果未使用前綴表達式,則默認使用主 Object 類。

下面是兩個實例:

MR_COUNT = 0        # 定義在主 Object 類上的常量
module Foo
  MR_COUNT = 0
  ::MR_COUNT = 1    # 設置全局計數為 1
  MR_COUNT = 2      # 設置局部計數為 2
end
puts MR_COUNT       # 這是全局常量
puts Foo::MR_COUNT  # 這是 "Foo" 的局部常量 

第二個實例:

CONST = ' out there'
class Inside_one
   CONST = proc {' in there'}
   def where_is_my_CONST
      ::CONST + ' inside one'
   end
end
class Inside_two
   CONST = ' inside two'
   def where_is_my_CONST
      CONST
   end
end
puts Inside_one.new.where_is_my_CONST
puts Inside_two.new.where_is_my_CONST
puts Object::CONST + Inside_two::CONST
puts Inside_two::CONST + CONST
puts Inside_one::CONST
puts Inside_one::CONST.call + Inside_two::CONST

Ruby 運算符的優先級

下表按照運算符的優先級從高到低列出了所有的運算符。

方法運算符描述
:: 常量解析運算符
[ ] [ ]= 元素引用、元素集合
** 指數
! ~ + - 非、補、一元加、一元減(最后兩個的方法名為 +@ 和 -@)
* / % 乘法、除法、求模
+ - 加法和減法
>> << 位右移、位左移
& 位與
^ | 位異或、位或
<= < > >= 比較運算符
<=> == === != =~ !~ 相等和模式匹配運算符(!= 和 !~ 不能被定義為方法)
&& 邏輯與
|| 邏輯或
.. ... 范圍(包含、不包含)
? : 三元 if-then-else
= %= { /= -= += |= &= >>= <<= *= &&= ||= **= 賦值
defined? 檢查指定符號是否已定義
not 邏輯否定
or and 邏輯組成

注意:在方法列標識為 的運算符實際上是方法,因此可以被重載。

關閉
程序員人生
主站蜘蛛池模板: 少妇性l交大片免费快色 | 韩日免费视频 | 综合久久一区 | 国产伦精品一区二区三区精品视频 | 美女网站色 | 天堂成人在线 | 亚洲欧洲在线视频 | 欧美日韩a v | www.天天射 | 国产精品第| 懂色av 粉嫩av 蜜乳av | 欧美日韩精品中文字幕 | 日韩一区二区视频 | 免费看的av | 欧美在线国产 | 欧美日韩视频一区二区 | 国产精品久久久久久久久久 | 国产精品福利视频一区 | 亚洲精品免费网站 | 国产精品永久免费视频 | 五月天久久久久久九一站片 | 韩日免费| 国产精品美女久久久久久久网站 | 久久久综合精品 | 精品国产精品 | 围产精品久久久久久久 | 欧美a√| 亚洲精品免费观看 | 精品人伦一区二区三区蜜桃网站 | 亚洲视频手机在线观看 | 中文字幕一区二区三区乱码图片 | 好吊色综合高清 | 欧美成人看片黄a免费看 | 久久精品在线 | 黄色一极毛片 | 欧美亚洲高清 | 国产精品日韩三级 | 尤物九九久久国产精品的特点 | 国产精品国产成人国产三级 | 成人精品一区二区三区视频播放 | 国产美女av|