ประกอบทับทิม
ทับทิมสนับสนุนชุดสมบูรณ์ของผู้ประกอบการ ผู้ประกอบการส่วนใหญ่มีความจริงวิธีการโทร ยกตัวอย่างเช่น A + B จะถูกตีความว่าเป็น. + (B) ประเด็นตัวแปรวิธี + ชี้ถูกเรียก B เป็นพารามิเตอร์ในการเรียกวิธีการที่
สำหรับแต่ละผู้ประกอบการ (+ - * /% ** & | ^ << >> && ||) มีผู้ประกอบการที่ได้รับมอบหมายย่อที่สอดคล้องกัน (+ = - = ฯลฯ )
ทับทิมดำเนินการทางคณิตศาสตร์
สมมติว่าตัวแปรค่า 10 ค่าตัวแปร B 20 แล้ว:
运算符 | 描述 | 实例 |
---|---|---|
+ | 加法 - 把运算符两边的操作数相加 | a + b 将得到 30 |
- | 减法 - 把左操作数减去右操作数 | a - b 将得到 -10 |
* | 乘法 - 把运算符两边的操作数相乘 | a * b 将得到 200 |
/ | 除法 - 把左操作数除以右操作数 | b / a 将得到 2 |
% | 求模 - 把左操作数除以右操作数,返回余数 | b % a 将得到 0 |
** | 指数 - 执行指数计算 | a**b 将得到 10 的 20 次方 |
เปรียบเทียบทับทิม
สมมติว่าตัวแปรค่า 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。 |
ผู้ประกอบการที่ได้รับมอบหมายทับทิม
สมมติว่าตัวแปรค่า 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 |
ทับทิมมอบหมายขนาน
ทับทิมยังสนับสนุนตัวแปรมอบหมายขนาน นี้จะช่วยให้หลายตัวแปรสามารถเริ่มต้นได้โดยบรรทัดของรหัสรูบี ตัวอย่างเช่น:
A = 10 B = 20 C = 30
โดยใช้การกำหนดขนานปฏิเสธความรับผิดชอบได้เร็วขึ้น:
A, B, C = 10, 20, 30
ที่ได้รับมอบหมายขนานเมื่อมีการแลกเปลี่ยนค่าของทั้งสองตัวแปรที่ยังมีประโยชน์:
A, B = B, C
ผู้ประกอบการ Bitwise ทับทิม
ผู้ประกอบการระดับบิตทำหน้าที่เกี่ยวกับบิตและบิตโดยการดำเนินการบิต
ถ้าสันนิษฐานว่า 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
ตารางต่อไปนี้แสดงทับทิมสนับสนุนผู้ประกอบการระดับบิต
ผู้ประกอบการ | ลักษณะ | ตัวอย่าง |
---|---|---|
& | ถ้าทั้งสองมีอยู่ในตัวถูกดำเนินการไบนารีและผู้ประกอบการในการคัดลอกผล | (A & B) จะเป็น 12, ที่อยู่, 0000 1100 |
| | หากอยู่ในตัวถูกดำเนินการอย่างใดอย่างหนึ่งไบนารีหรือผู้ประกอบการในการคัดลอกผล | (A | B) จะเป็น 61, เป็น 00,111,101 |
^ | หากอยู่ในหนึ่งในตัวถูกดำเนินการ แต่ไม่ได้ไปพร้อม ๆ กันที่มีอยู่ในทั้งสองตัวถูกดำเนินการ, ผู้ประกอบการ XOR ไบนารีสำเนาไปยังผลที่ตามมา | (A ^ ข) จะเป็น 49, เป็น 00,110,001 |
~ | ผู้ประกอบการเติมเต็มเจ้าตัวเป็นผู้ประกอบการเอกเป็น "พลิก" ผลตำแหน่ง | (~ A) จะ -61 1100 0011,2 จะเติมเต็มรูปแบบของเลขฐานสองที่มีสัญลักษณ์ |
<< | Binary ประกอบกะซ้าย ค่าของตัวถูกดำเนินการด้านซ้ายเพื่อเลื่อนไปทางซ้ายและขวาถูกดำเนินการตามจำนวนที่ระบุตัวเลข | << 2 จะเป็น 240 นั่นคือ 11110000 |
>> | Binary ประกอบการเปลี่ยนแปลงทางด้านขวา ค่าของตัวถูกดำเนินการด้านซ้ายย้ายขวาถูกดำเนินการตามจำนวนที่ระบุของบิตไปทางขวา | >> 2 จะเป็น 15, ที่อยู่, 0000 1111 |
ทับทิมดำเนินการทางตรรกะ
ตารางต่อไปนี้แสดงทับทิมสนับสนุนการดำเนินการทางตรรกะ
สมมติว่าตัวแปรค่า 10 ค่าตัวแปร B 20 แล้ว:
运算符 | 描述 | 实例 |
---|---|---|
and | 称为逻辑与运算符。如果两个操作数都为真,则条件为真。 | (a and b) 为真。 |
or | 称为逻辑或运算符。如果两个操作数中有任意一个非零,则条件为真。 | (a or b) 为真。 |
&& | 称为逻辑与运算符。如果两个操作数都非零,则条件为真。 | (a && b) 为真。 |
|| | 称为逻辑或运算符。如果两个操作数中有任意一个非零,则条件为真。 | (a || b) 为真。 |
! | 称为逻辑非运算符。用来逆转操作数的逻辑状态。如果条件为真则逻辑非运算符将使其为假。 | !(a && b) 为假。 |
not | 称为逻辑非运算符。用来逆转操作数的逻辑状态。如果条件为真则逻辑非运算符将使其为假。 | not(a && b) 为假。 |
ทับทิมประกอบ ternary
มีการกระทำมากกว่าหนึ่งเรียกว่าผู้ประกอบ ternary ครั้งแรกที่ค่าความจริงการใช้คอมพิวเตอร์ในการแสดงออกและจากนั้นตัดสินใจที่จะใช้ทั้งสองที่อยู่เบื้องหลังในการแถลงขึ้นอยู่กับผลที่ได้ ผู้ประกอบการมีไวยากรณ์เงื่อนไขต่อไปนี้:
运算符 | 描述 | 实例 |
---|---|---|
? : | 条件表达式 | 如果条件为真 ? 则值为 X : 否则值为 Y |
ทับทิมประกอบการช่วง
ในทับทิมลำดับที่ใช้ในการสร้างชุดของค่าช่วงติดต่อกัน - มีค่าเริ่มต้นค่าจบ (มีจำนวน จำกัด ) และค่านิยมระหว่างพวกเขา
ในทับทิมลำดับเหล่านี้คือการใช้ " .. " และ " ... " ผู้ประกอบการหลากหลายในการสร้าง ช่วงมีสองรูปแบบสร้างเริ่มต้นและสิ้นสุดค่าช่วงของสามในการสร้างรูปแบบที่มีเฉพาะค่าสิ้นค่าเริ่มต้นจะไม่รวมถึง
运算符 | 描述 | 实例 |
---|---|---|
.. | 创建一个从开始点到结束点的范围(包含结束点) | 1..10 创建从 1 到 10 的范围 |
... | 创建一个从开始点到结束点的范围(不包含结束点) | 1...10 创建从 1 到 9 的范围 |
ทับทิมกำหนด? ผู้ประกอบการ
กำหนด? เป็นผู้ประกอบการพิเศษไม่ว่าจะเป็นในรูปแบบของการเรียกวิธีที่จะผ่านการตัดสินการแสดงออกที่ถูกกำหนดไว้มันกลับแสดงออกสตริงคำอธิบายถ้าการแสดงออกเป็นผลตอบแทนที่ได้กำหนดศูนย์
ต่อไปนี้เป็นผู้ประกอบการต่าง ๆ ที่กำหนดไว้การใช้งาน ?:
การใช้งาน 1
กำหนด? ตัวแปร # ถ้าตัวแปรที่ได้รับการเริ่มต้นทรูมันนี่
ตัวอย่างเช่น:
foo = 42 กำหนด? foo # => "ท้องถิ่นตัวแปร" กำหนด? $ _ # => "ทั่วโลกตัวแปร" กำหนด? บาร์ # => ศูนย์ (ไม่ได้กำหนด)
การใช้งาน 2
กำหนด? method_call # ถ้าวิธีการที่ได้ถูกกำหนดให้ทรู
ตัวอย่างเช่น:
กำหนด? # ทำให้ "วิธีการ" => กำหนด? ทำให้ (บาร์) # => ศูนย์ (ไม่ได้กำหนดที่นี่บาร์) กำหนด? แกะ # => ศูนย์ (ไม่ได้กำหนดที่นี่)
การใช้งาน 3
# ถ้าวิธีการที่สามารถเรียกว่าเป็นผู้ใช้ super อยู่ทรูแล้ว กำหนด? ซุปเปอร์
ตัวอย่างเช่น:
กำหนด? ซุปเปอร์ # => "ซูเปอร์" (ถ้าสามารถเรียกว่า) กำหนด? ซุปเปอร์ # => ศูนย์ (ถ้าไม่ถูกเรียก)
การใช้งาน 4
กำหนด? ผลผลิต # ถ้าการป้องกันรหัสผ่านทรูมันนี่
ตัวอย่างเช่น:
กำหนด? ผลผลิต # => "ผลตอบแทน" (ถ้าบล็อกรับโอน) กำหนด? ผลผลิต # => ศูนย์ (ถ้าไม่ผ่านบล็อก)
ทับทิม dot ผู้ประกอบการ "." และผู้ประกอบการลำไส้ใหญ่คู่ "::"
คุณสามารถเพิ่มชื่อโมดูลและขีดที่จะเรียกวิธีโมดูลก่อนชื่อวิธี คุณสามารถใช้ชื่อโมดูลและสองทวิภาคการอ้างอิงค่าคงที่
:: เป็นผู้ประกอบการเอกที่ช่วยให้คงที่เช่นวิธีการและวิธีการเรียนที่กำหนดไว้ในชั้นเรียนหรือโมดูลที่สามารถเข้าถึงได้ทุกที่ในชั้นเรียนหรือโมดูลจากภายนอก
โปรดจำไว้ว่า: ในทับทิมชั้นเรียนและวิธีนี้ยังสามารถใช้เป็นค่าคงที่
คุณจะต้องเพิ่มก่อนที่ชื่อของค่าคงที่แสดงออก:: คำนำหน้าเพื่อกลับไปยังระดับที่เหมาะสมหรือวัตถุโมดูล
ถ้าแสดงออกคำนำหน้าไม่ได้ใช้ชั้นวัตถุต้นแบบเริ่มต้น
นี่คือตัวอย่างที่สอง:
MR_COUNT = 0 # ระดับวัตถุที่กำหนดไว้ในค่าคงที่หลักโมดูลฟู MR_COUNT = 0 :: MR_COUNT = 1 # เพื่อกำหนดนับทั่วโลก 1 MR_COUNT = 2 # กำหนดนับท้องถิ่นของ 2 ปลาย ทำให้ MR_COUNT # นี่เป็นค่าคงที่ทำให้ทั่วโลก Foo :: MR_COUNT # อะไรคือ "ฟู" คงที่ในท้องถิ่น
ตัวอย่างที่สอง:
CONST = 'ออกมี' ระดับ Inside_one CONST = proc { 'ในการมี'} def where_is_my_CONST :: CONST + 'ภายในหนึ่ง' ปลาย ปลาย ระดับ Inside_two CONST = 'ภายในสอง' def where_is_my_CONST CONST ปลาย ปลาย ทำให้ Inside_one.new.where_is_my_CONST ทำให้ Inside_two.new.where_is_my_CONST ทำให้วัตถุ :: CONST + Inside_two :: CONST ทำให้ Inside_two :: CONST + CONST ทำให้ Inside_one :: CONST ทำให้ Inside_one :: CONST.call + Inside_two :: CONST
ทับทิมสำคัญประกอบ
ตารางต่อไปนี้ขึ้นอยู่กับผู้ประกอบการที่มีความสำคัญแสดงรายการผู้ประกอบการทั้งหมด
方法 | 运算符 | 描述 |
---|---|---|
是 | :: | 常量解析运算符 |
是 | [ ] [ ]= | 元素引用、元素集合 |
是 | ** | 指数 |
是 | ! ~ + - | 非、补、一元加、一元减(最后两个的方法名为 +@ 和 -@) |
是 | * / % | 乘法、除法、求模 |
是 | + - | 加法和减法 |
是 | >> << | 位右移、位左移 |
是 | & | 位与 |
是 | ^ | | 位异或、位或 |
是 | <= < > >= | 比较运算符 |
是 | <=> == === != =~ !~ | 相等和模式匹配运算符(!= 和 !~ 不能被定义为方法) |
&& | 逻辑与 | |
|| | 逻辑或 | |
.. ... | 范围(包含、不包含) | |
? : | 三元 if-then-else | |
= %= { /= -= += |= &= >>= <<= *= &&= ||= **= | 赋值 | |
defined? | 检查指定符号是否已定义 | |
not | 逻辑否定 | |
or and | 逻辑组成 |
หมายเหตุ: คอลัมน์ที่ถูกระบุว่าเป็นวิธีการที่ผู้ประกอบการที่เป็นจริงวิธีการก็สามารถรับน้ำหนักมากเกินไป