Solidity - ตัวดำเนินการ

Operator คืออะไร?

ให้เราใช้สำนวนง่ายๆ 4 + 5 is equal to 9. ที่นี่เรียกว่า 4 และ 5operands และ '+' เรียกว่า operator. Solidity รองรับตัวดำเนินการประเภทต่อไปนี้

  • ตัวดำเนินการเลขคณิต
  • ตัวดำเนินการเปรียบเทียบ
  • ตัวดำเนินการเชิงตรรกะ (หรือเชิงสัมพันธ์)
  • ผู้ดำเนินการมอบหมาย
  • ตัวดำเนินการตามเงื่อนไข (หรือตามเงื่อนไข)

มาดูตัวดำเนินการทั้งหมดทีละคน

ตัวดำเนินการเลขคณิต

Solidity รองรับตัวดำเนินการเลขคณิตต่อไปนี้ -

สมมติว่าตัวแปร A ถือ 10 และตัวแปร B ถือ 20 จากนั้น -

แสดงตัวอย่าง

ซีเนียร์ ตัวดำเนินการและคำอธิบาย
1

+ (Addition)

เพิ่มสองตัวถูกดำเนินการ

Ex: A + B จะให้ 30

2

- (Subtraction)

ลบตัวถูกดำเนินการที่สองจากตัวแรก

Ex: A - B จะให้ -10

3

* (Multiplication)

คูณตัวถูกดำเนินการทั้งสอง

Ex: A * B จะให้ 200

4

/ (Division)

หารตัวเศษด้วยตัวส่วน

Ex: B / A จะให้ 2

5

% (Modulus)

แสดงผลส่วนที่เหลือของการหารจำนวนเต็ม

Ex: B% A จะให้ 0

6

++ (Increment)

เพิ่มค่าจำนวนเต็มขึ้นหนึ่ง

Ex: A ++ จะให้ 11

7

-- (Decrement)

ลดค่าจำนวนเต็มลงหนึ่ง

Ex: A-- จะให้ 9

ตัวดำเนินการเปรียบเทียบ

Solidity รองรับตัวดำเนินการเปรียบเทียบต่อไปนี้ -

สมมติว่าตัวแปร A ถือ 10 และตัวแปร B ถือ 20 จากนั้น -

แสดงตัวอย่าง

ซีเนียร์ ตัวดำเนินการและคำอธิบาย
1

= = (Equal)

ตรวจสอบว่าค่าของตัวถูกดำเนินการสองตัวเท่ากันหรือไม่ถ้าใช่เงื่อนไขจะกลายเป็นจริง

Ex: (A == B) ไม่เป็นความจริง

2

!= (Not Equal)

ตรวจสอบว่าค่าของตัวถูกดำเนินการสองตัวเท่ากันหรือไม่หากค่าไม่เท่ากันเงื่อนไขจะกลายเป็นจริง

Ex: (A! = B) เป็นจริง

3

> (Greater than)

ตรวจสอบว่าค่าของตัวถูกดำเนินการด้านซ้ายมากกว่าค่าของตัวถูกดำเนินการด้านขวาหรือไม่ถ้าใช่เงื่อนไขจะกลายเป็นจริง

Ex: (A> B) ไม่เป็นความจริง

4

< (Less than)

ตรวจสอบว่าค่าของตัวถูกดำเนินการด้านซ้ายน้อยกว่าค่าของตัวถูกดำเนินการด้านขวาหรือไม่ถ้าใช่เงื่อนไขจะกลายเป็นจริง

Ex: (A <B) เป็นจริง

5

>= (Greater than or Equal to)

ตรวจสอบว่าค่าของตัวถูกดำเนินการด้านซ้ายมากกว่าหรือเท่ากับค่าของตัวถูกดำเนินการด้านขวาหรือไม่ถ้าใช่เงื่อนไขจะกลายเป็นจริง

Ex: (A> = B) ไม่เป็นความจริง

6

<= (Less than or Equal to)

ตรวจสอบว่าค่าของตัวถูกดำเนินการด้านซ้ายน้อยกว่าหรือเท่ากับค่าของตัวถูกดำเนินการด้านขวาหรือไม่ถ้าใช่เงื่อนไขจะกลายเป็นจริง

Ex: (A <= B) เป็นจริง

ตัวดำเนินการทางตรรกะ

Solidity สนับสนุนตัวดำเนินการเชิงตรรกะต่อไปนี้ -

สมมติว่าตัวแปร A ถือ 10 และตัวแปร B ถือ 20 จากนั้น -

แสดงตัวอย่าง

ซีเนียร์ ตัวดำเนินการและคำอธิบาย
1

&& (Logical AND)

ถ้าตัวถูกดำเนินการทั้งสองไม่ใช่ศูนย์เงื่อนไขจะกลายเป็นจริง

Ex: (A && B) เป็นเรื่องจริง

2

|| (Logical OR)

หากตัวถูกดำเนินการสองตัวใดตัวหนึ่งไม่เป็นศูนย์เงื่อนไขจะกลายเป็นจริง

Ex: (A || B) เป็นจริง

3

! (Logical NOT)

กลับสถานะตรรกะของตัวถูกดำเนินการ หากเงื่อนไขเป็นจริงตัวดำเนินการ Logical NOT จะทำให้เป็นเท็จ

Ex:! (A && B) เป็นเท็จ

ตัวดำเนินการ Bitwise

Solidity รองรับตัวดำเนินการระดับบิตต่อไปนี้ -

สมมติว่าตัวแปร A ถือ 2 และตัวแปร B ถือ 3 จากนั้น -

แสดงตัวอย่าง

ซีเนียร์ ตัวดำเนินการและคำอธิบาย
1

& (Bitwise AND)

ดำเนินการบูลีน AND กับอาร์กิวเมนต์จำนวนเต็มแต่ละบิต

Ex: (A & B) คือ 2

2

| (BitWise OR)

ดำเนินการบูลีนหรือการดำเนินการกับอาร์กิวเมนต์จำนวนเต็มแต่ละบิต

Ex: (A | B) คือ 3

3

^ (Bitwise XOR)

ดำเนินการบูลีนเอกสิทธิ์เฉพาะหรือการดำเนินการกับอาร์กิวเมนต์จำนวนเต็มแต่ละบิต Exclusive OR หมายความว่าตัวถูกดำเนินการตัวใดตัวหนึ่งเป็นจริงหรือตัวถูกดำเนินการสองเป็นจริง แต่ไม่ใช่ทั้งสองอย่าง

Ex: (A ^ B) คือ 1.

4

~ (Bitwise Not)

เป็นตัวดำเนินการยูนารีและดำเนินการโดยการย้อนกลับบิตทั้งหมดในตัวถูกดำเนินการ

Ex: (~ B) คือ -4

5

<< (Left Shift)

มันย้ายบิตทั้งหมดในตัวถูกดำเนินการตัวแรกไปทางซ้ายตามจำนวนตำแหน่งที่ระบุในตัวถูกดำเนินการที่สอง บิตใหม่เต็มไปด้วยศูนย์ การเลื่อนค่าไปทางซ้ายหนึ่งตำแหน่งจะเทียบเท่ากับการคูณด้วย 2 การเลื่อนสองตำแหน่งจะเทียบเท่ากับการคูณด้วย 4 และอื่น ๆ

Ex: (A << 1) คือ 4

6

>> (Right Shift)

ตัวดำเนินการกะไบนารีขวา ค่าของตัวถูกดำเนินการด้านซ้ายจะถูกย้ายไปทางขวาตามจำนวนบิตที่ระบุโดยตัวถูกดำเนินการด้านขวา

Ex: (A >> 1) คือ 1

7

>>> (Right shift with Zero)

ตัวดำเนินการนี้เหมือนกับตัวดำเนินการ >> ยกเว้นว่าบิตที่เลื่อนไปทางซ้ายจะเป็นศูนย์เสมอ

Ex: (A >>> 1) คือ 1

ผู้ดำเนินการมอบหมาย

Solidity สนับสนุนตัวดำเนินการกำหนดดังต่อไปนี้ -

แสดงตัวอย่าง

ซีเนียร์ ตัวดำเนินการและคำอธิบาย
1

= (Simple Assignment )

กำหนดค่าจากตัวถูกดำเนินการด้านขวาไปยังตัวถูกดำเนินการด้านซ้าย

Ex: C = A + B จะกำหนดค่าของ A + B ให้เป็น C

2

+= (Add and Assignment)

เพิ่มตัวถูกดำเนินการด้านขวาให้กับตัวถูกดำเนินการด้านซ้ายและกำหนดผลลัพธ์ให้กับตัวถูกดำเนินการด้านซ้าย

Ex: C + = A เทียบเท่ากับ C = C + A

3

−= (Subtract and Assignment)

มันจะลบตัวถูกดำเนินการด้านขวาออกจากตัวถูกดำเนินการด้านซ้ายและกำหนดผลลัพธ์ให้กับตัวถูกดำเนินการด้านซ้าย

Ex: C - = A เทียบเท่ากับ C = C - A

4

*= (Multiply and Assignment)

มันจะคูณตัวถูกดำเนินการด้านขวาด้วยตัวถูกดำเนินการด้านซ้ายและกำหนดผลลัพธ์ให้กับตัวถูกดำเนินการด้านซ้าย

Ex: C * = A เทียบเท่ากับ C = C * A

5

/= (Divide and Assignment)

มันแบ่งตัวถูกดำเนินการด้านซ้ายด้วยตัวถูกดำเนินการด้านขวาและกำหนดผลลัพธ์ให้กับตัวถูกดำเนินการด้านซ้าย

Ex: C / = A เทียบเท่ากับ C = C / A

6

%= (Modules and Assignment)

ใช้โมดูลัสโดยใช้ตัวถูกดำเนินการสองตัวและกำหนดผลลัพธ์ให้กับตัวถูกดำเนินการด้านซ้าย

Ex: C% = A เทียบเท่ากับ C = C% A

Note - ตรรกะเดียวกันนี้ใช้กับตัวดำเนินการ Bitwise ดังนั้นจึงกลายเป็น << =, >> =, >> =, & =, | = และ ^ =

ตัวดำเนินการตามเงื่อนไข (? :)

ตัวดำเนินการตามเงื่อนไขจะประเมินนิพจน์สำหรับค่าจริงหรือเท็จก่อนจากนั้นเรียกใช้หนึ่งในสองคำสั่งที่กำหนดขึ้นอยู่กับผลลัพธ์ของการประเมิน

แสดงตัวอย่าง

ซีเนียร์ ตัวดำเนินการและคำอธิบาย
1

? : (Conditional )

ถ้า Condition เป็นจริง? จากนั้นค่า X: หรือค่า Y