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 |