pengendali rubi
Ruby menyokong set pengendali yang kaya. Kebanyakan pengendali sebenarnya adalah panggilan kaedah. Sebagai contoh, a + b ditafsirkan sebagai a.+(b), di mana kaedah + yang menunjuk kepada pembolehubah a dipanggil dengan b sebagai hujah kepada panggilan kaedah.
Untuk setiap operator (+ - * / % ** & | ^ << >> && ||), terdapat operator penugasan singkatan yang sepadan (+= -= dll).
Pengendali aritmetik Ruby
Katakan nilai pembolehubah a ialah 10 dan nilai pembolehubah b ialah 20, maka:
运算符 | 描述 | 实例 |
---|---|---|
+ | 加法 - 把运算符两边的操作数相加 | a + b 将得到 30 |
- | 减法 - 把左操作数减去右操作数 | a - b 将得到 -10 |
* | 乘法 - 把运算符两边的操作数相乘 | a * b 将得到 200 |
/ | 除法 - 把左操作数除以右操作数 | b / a 将得到 2 |
% | 求模 - 把左操作数除以右操作数,返回余数 | b % a 将得到 0 |
** | 指数 - 执行指数计算 | a**b 将得到 10 的 20 次方 |
Pengendali perbandingan Ruby
Andaikan nilai pembolehubah a ialah 10 dan nilai pembolehubah b ialah 20, maka:
运算符 | 描述 | 实例 |
---|---|---|
== | 检查两个操作数的值是否相等,如果相等则条件为真。 | (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。 |
Pengendali tugasan Ruby
Andaikan nilai pembolehubah a ialah 10 dan nilai pembolehubah b ialah 20, maka:
运算符 | 描述 | 实例 |
---|---|---|
= | 简单的赋值运算符,把右操作数的值赋给左操作数 | 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 |
Tugasan selari Ruby
Ruby juga menyokong penetapan selari pembolehubah. Ini membolehkan berbilang pembolehubah dimulakan dengan satu baris kod Ruby. Contohnya:
a = 10 b = 20 c = 30
Gunakan tugasan selari untuk mengisytiharkan lebih cepat:
a, b, c = 10, 20, 30
Tugasan selari juga berguna apabila menukar nilai dua pembolehubah:
a, b = b, c
Pengendali bitwise Ruby
Pengendali bitwise beroperasi pada bit dan melaksanakan operasi sedikit demi sedikit.
Andaikan jika a = 60, dan b = 13, kini dalam format binari, ia kelihatan seperti ini:
a = 0011 1100
b = 0000 1101
-----------------
a&b = 0000 1100
a|b = 0011 1101
a^ b = 0011 0001
~a = 1100 0011
Jadual berikut menyenaraikan pengendali bitwise yang disokong oleh 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 |
Operator Logik Ruby
Jadual berikut menyenaraikan pengendali logik yang disokong oleh Ruby.
Andaikan nilai pembolehubah a ialah 10 dan nilai pembolehubah b ialah 20, maka:
运算符 | 描述 | 实例 |
---|---|---|
and | 称为逻辑与运算符。如果两个操作数都为真,则条件为真。 | (a and b) 为真。 |
or | 称为逻辑或运算符。如果两个操作数中有任意一个非零,则条件为真。 | (a or b) 为真。 |
&& | 称为逻辑与运算符。如果两个操作数都非零,则条件为真。 | (a && b) 为真。 |
|| | 称为逻辑或运算符。如果两个操作数中有任意一个非零,则条件为真。 | (a || b) 为真。 |
! | 称为逻辑非运算符。用来逆转操作数的逻辑状态。如果条件为真则逻辑非运算符将使其为假。 | !(a && b) 为假。 |
not | 称为逻辑非运算符。用来逆转操作数的逻辑状态。如果条件为真则逻辑非运算符将使其为假。 | not(a && b) 为假。 |
Pengendali ternary Ruby
mempunyai lebih daripada satu Operasi dipanggil pengendali ternary. Yang pertama mengira nilai benar atau salah bagi ungkapan, dan kemudian memutuskan untuk melaksanakan salah satu daripada dua pernyataan berikut berdasarkan hasil ini. Sintaks pengendali bersyarat adalah seperti berikut:
运算符 | 描述 | 实例 |
---|---|---|
? : | 条件表达式 | 如果条件为真 ? 则值为 X : 否则值为 Y |
Operator Julat Ruby
Dalam Ruby, julat jujukan digunakan untuk mencipta satu siri nilai berturut-turut - termasuk permulaan nilai dan nilai akhir (mengikut keadaan) dan nilai di antara mereka.
Dalam Ruby, jujukan ini dibuat menggunakan operator julat ".." dan "...". Julat yang dicipta oleh bentuk dua titik mengandungi nilai mula dan nilai akhir, dan julat yang dicipta oleh bentuk tiga titik hanya mengandungi nilai mula dan tidak termasuk nilai akhir.
运算符 | 描述 | 实例 |
---|---|---|
.. | 创建一个从开始点到结束点的范围(包含结束点) | 1..10 创建从 1 到 10 的范围 |
... | 创建一个从开始点到结束点的范围(不包含结束点) | 1...10 创建从 1 到 9 的范围 |
Ruby ditakrifkan? Ia mengembalikan rentetan yang menerangkan ungkapan, atau
niljika ungkapan tidak ditentukan. Berikut ialah pelbagai penggunaan operator yang ditakrifkan:
Penggunaan 1
defined? variable # 如果 variable 已经初始化,则为 True
Contohnya:
foo = 42 defined? foo # => "local-variable" defined? $_ # => "global-variable" defined? bar # => nil(未定义)
Penggunaan 2
defined? method_call # 如果方法已经定义,则为 True
Contohnya:
defined? puts # => "method" defined? puts(bar) # => nil(在这里 bar 未定义) defined? unpack # => nil(在这里未定义)
Penggunaan 3
# 如果存在可被 super 用户调用的方法,则为 True defined? super
Contohnya:
defined? super # => "super"(如果可被调用) defined? super # => nil(如果不可被调用)
Penggunaan 4
defined? yield # 如果已传递代码块,则为 True
Contohnya:
rreeeRuby pengendali titik" ." dan operator bertitik dua "::"
Anda boleh memanggil kaedah modul dengan mendahului nama kaedah dengan nama modul dan garis bawah. Anda boleh merujuk pemalar menggunakan nama modul dan dua titik bertindih.
::ialah operator unari yang membenarkan pemalar, kaedah contoh dan kaedah kelas ditakrifkan dalam kelas atau modul dan boleh diakses dari mana-mana sahaja di luar kelas atau modul.
Ingat:Dalam Ruby, kelas dan kaedah juga boleh dianggap sebagai pemalar. Anda hanya perlu memberi awalan nama tetap bagi ungkapan dengan
::untuk mengembalikan objek kelas atau modul yang sesuai. Jika tiada ungkapan awalan digunakan, kelas Objek utama digunakan secara lalai.
Berikut ialah dua contoh:
defined? yield # => "yield"(如果已传递块) defined? yield # => nil(如果未传递块)
Contoh kedua:
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" 的局部常量
Keutamaan pengendali Ruby
Jadual berikut adalah berdasarkan keutamaan pengendali Semua pengendali disenaraikan dari tahap tertinggi hingga tahap terendah.
Kaedah | Operator | Penerangan | tr >||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
ialah | :: | Operator penghuraian berterusan | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ialah | [ ] [ ]= | Rujukan elemen, koleksi elemen | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
adalah | ** | indeks td> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Ya | ~ + - | Tidak, pelengkap, penambahan satu yuan, tolak satu yuan (dua kaedah terakhir ialah bernama +@ dan -@) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Ya | * / % | Pendaraban, pembahagian, modulus | tr>||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Ya | + - | Tambahan dan penolakan | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Ya | >> << | Anjakan sedikit ke kanan, anjakan sedikit ke kiri | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Ya | & | < td>bit DAN|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
adalah | ^ | | bit XOR, bit ATAU | Ya | <= >= | Pengendali perbandingan | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Ya td; | <=> == === != =~ !~ | Operator padanan kesamaan dan corak (!= dan !~ tidak boleh ditakrifkan sebagai kaedah) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
&& | Logik DAN | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|| | Logik ATAU | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| .. ... | Julat ( termasuk, tidak termasuk) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
<🎜> | ? : | Ternary if-then-else td> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
<🎜> | = %= { /= -= += |= &= >>= <<= *= &&= ||= ** = | Tugasan | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
<🎜> | ditakrifkan? | Semak simbol yang ditentukan Adakah ia ditakrifkan< /td> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
<🎜> | bukan | penafian logik | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
<🎜> | atau dan | komposisi logik |
Nota: Operator yang dikenal pasti sebagai dalam lajur kaedah adalah sebenarnya kaedah dan oleh itu boleh terlebih beban.