Swift - โอเปอเรเตอร์
ตัวดำเนินการคือสัญลักษณ์ที่บอกให้คอมไพเลอร์ดำเนินการทางคณิตศาสตร์หรือตรรกะเฉพาะ Objective-C อุดมไปด้วยตัวดำเนินการในตัวและมีตัวดำเนินการประเภทต่อไปนี้ -
- ตัวดำเนินการเลขคณิต
- ตัวดำเนินการเปรียบเทียบ
- ตัวดำเนินการทางตรรกะ
- ตัวดำเนินการ Bitwise
- ผู้ดำเนินการมอบหมาย
- ตัวดำเนินการช่วง
- ตัวดำเนินการอื่น ๆ
บทช่วยสอนนี้จะอธิบายเกี่ยวกับเลขคณิตเชิงสัมพันธ์ตรรกะบิตการกำหนดและตัวดำเนินการอื่น ๆ ทีละรายการ
ตัวดำเนินการเลขคณิต
ตารางต่อไปนี้แสดงตัวดำเนินการเลขคณิตทั้งหมดที่ภาษา Swift 4 รองรับ สมมติตัวแปรA ถือ 10 และตัวแปร B ถือ 20 แล้ว -
ตัวดำเนินการ | คำอธิบาย | ตัวอย่าง |
---|---|---|
+ | เพิ่มสองตัวถูกดำเนินการ | A + B จะให้ 30 |
- | ลบตัวถูกดำเนินการที่สองจากตัวแรก | A - B จะให้ -10 |
* | คูณตัวถูกดำเนินการทั้งสอง | A * B จะให้ 200 |
/ | หารตัวเศษด้วยตัวส่วน | B / A จะให้ 2 |
% | ตัวดำเนินการโมดูลัสและส่วนที่เหลือหลังจากการหารจำนวนเต็ม / ลอย | B% A จะให้ 0 |
ตัวดำเนินการเปรียบเทียบ
ตารางต่อไปนี้แสดงตัวดำเนินการเชิงสัมพันธ์ทั้งหมดที่รองรับโดยภาษา Swift 4 สมมติตัวแปรA ถือ 10 และตัวแปร B ถือ 20 แล้ว -
ตัวดำเนินการ | คำอธิบาย | ตัวอย่าง |
---|---|---|
== | ตรวจสอบว่าค่าของตัวถูกดำเนินการสองตัวเท่ากันหรือไม่ ถ้าใช่เงื่อนไขจะกลายเป็นจริง | (A == B) ไม่เป็นความจริง |
! = | ตรวจสอบว่าค่าของตัวถูกดำเนินการสองตัวเท่ากันหรือไม่ หากค่าไม่เท่ากันเงื่อนไขจะกลายเป็นจริง | (A! = B) เป็นจริง |
> | ตรวจสอบว่าค่าของตัวถูกดำเนินการด้านซ้ายมากกว่าค่าของตัวถูกดำเนินการด้านขวาหรือไม่ ถ้าใช่เงื่อนไขจะกลายเป็นจริง | (A> B) ไม่เป็นความจริง |
< | ตรวจสอบว่าค่าของตัวถูกดำเนินการด้านซ้ายน้อยกว่าค่าของตัวถูกดำเนินการด้านขวาหรือไม่ ถ้าใช่เงื่อนไขจะกลายเป็นจริง | (A <B) เป็นจริง |
> = | ตรวจสอบว่าค่าของตัวถูกดำเนินการด้านซ้ายมากกว่าหรือเท่ากับค่าของตัวถูกดำเนินการด้านขวาหรือไม่ ถ้าใช่เงื่อนไขจะกลายเป็นจริง | (A> = B) ไม่เป็นความจริง |
<= | ตรวจสอบว่าค่าของตัวถูกดำเนินการด้านซ้ายน้อยกว่าหรือเท่ากับค่าของตัวถูกดำเนินการด้านขวาหรือไม่ ถ้าใช่เงื่อนไขจะกลายเป็นจริง | (A <= B) เป็นจริง |
ตัวดำเนินการทางตรรกะ
ตารางต่อไปนี้แสดงตัวดำเนินการทางตรรกะทั้งหมดที่สนับสนุนโดยภาษา Swift 4 สมมติตัวแปรA ถือ 1 และตัวแปร B ถือ 0 แล้ว -
ตัวดำเนินการ | คำอธิบาย | ตัวอย่าง |
---|---|---|
&& | เรียกว่าตัวดำเนินการ Logical AND ถ้าตัวถูกดำเนินการทั้งสองไม่ใช่ศูนย์เงื่อนไขจะกลายเป็นจริง | (A && B) เป็นเท็จ |
|| | เรียกว่า Logical OR Operator หากตัวถูกดำเนินการสองตัวใดตัวหนึ่งไม่เป็นศูนย์เงื่อนไขจะกลายเป็นจริง | (A || B) เป็นจริง |
! | เรียกว่า Logical NOT Operator ใช้เพื่อย้อนกลับสถานะตรรกะของตัวถูกดำเนินการ หากเงื่อนไขเป็นจริงตัวดำเนินการ Logical NOT จะทำให้เป็นเท็จ | ! (A && B) เป็นเรื่องจริง |
ตัวดำเนินการ Bitwise
ตัวดำเนินการ Bitwise ทำงานบนบิตและดำเนินการทีละบิต ตารางความจริงสำหรับ &, | และ ^ มีดังนี้ -
น | q | p & q | p | q | p ^ q |
---|---|---|---|---|
0 | 0 | 0 | 0 | 0 |
0 | 1 | 0 | 1 | 1 |
1 | 1 | 1 | 1 | 0 |
1 | 0 | 0 | 1 | 1 |
Assume A = 60; and B = 13;
In binary format, they will be as follows:
A = 0011 1100
B = 0000 1101
-----------------
A & B = 0000 1100
A|B = 0011 1101
A^B = 0011 0001
~A = 1100 0011
ตัวดำเนินการ Bitwise ที่รองรับภาษา Swift 4 แสดงอยู่ในตารางต่อไปนี้ สมมติตัวแปรA ถือ 60 และตัวแปร B ถือ 13 แล้ว 7−
ตัวดำเนินการ | คำอธิบาย | ตัวอย่าง |
---|---|---|
& | ไบนารีและตัวดำเนินการจะคัดลอกบิตไปยังผลลัพธ์หากมีอยู่ในตัวถูกดำเนินการทั้งสอง | (A & B) จะให้ 12 ซึ่งก็คือ 0000 1100 |
| | ไบนารีหรือตัวดำเนินการจะคัดลอกบิตหากมีอยู่ในตัวถูกดำเนินการอย่างใดอย่างหนึ่ง | (A | B) จะให้ 61 ซึ่งก็คือ 0011 1101 |
^ | ตัวดำเนินการ XOR ไบนารีจะคัดลอกบิตหากตั้งค่าไว้ในตัวถูกดำเนินการเดียว แต่ไม่ใช่ทั้งสองอย่าง | (A ^ B) จะให้ 49 ซึ่งก็คือ 0011 0001 |
~ | Binary Ones Complement Operator เป็นเอกภาพและมีผลของบิต 'พลิก' | (~ A) จะให้ -61 ซึ่งก็คือ 1100 0011 ในรูปแบบส่วนประกอบของ 2 |
<< | ตัวดำเนินการกะซ้ายแบบไบนารี ค่าตัวถูกดำเนินการด้านซ้ายจะถูกย้ายไปทางซ้ายตามจำนวนบิตที่ระบุโดยตัวถูกดำเนินการด้านขวา | (A << 2 จะให้ 240 ซึ่งก็คือ 1111 0000 |
>> | ตัวดำเนินการกะไบนารีขวา ค่าตัวถูกดำเนินการด้านซ้ายจะถูกย้ายไปทางขวาตามจำนวนบิตที่ระบุโดยตัวถูกดำเนินการด้านขวา | A >> 2 จะให้ 15 ซึ่งก็คือ 0000 1111 |
ผู้ดำเนินการมอบหมาย
SSwift 4 รองรับตัวดำเนินการกำหนดดังต่อไปนี้ -
ตัวดำเนินการ | คำอธิบาย | ตัวอย่าง |
---|---|---|
= | ตัวดำเนินการกำหนดแบบง่ายกำหนดค่าจากตัวถูกดำเนินการด้านขวาไปยังตัวถูกดำเนินการด้านซ้าย | 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 << = 2 เหมือนกับ C = C << 2 |
>> = | ตัวดำเนินการกะและกำหนดสิทธิ์ | C >> = 2 เหมือนกับ C = C >> 2 |
& = | ตัวดำเนินการกำหนด Bitwise AND | C & = 2 เหมือนกับ C = C & 2 |
^ = | บิตพิเศษ OR และตัวดำเนินการกำหนด | C ^ = 2 เหมือนกับ C = C ^ 2 |
| = | รวมบิตหรือและตัวดำเนินการกำหนด | C | = 2 เหมือนกับ C = C | 2 |
ตัวดำเนินการช่วง
Swift 4 มีตัวดำเนินการสองช่วงซึ่งเป็นทางลัดสำหรับการแสดงช่วงของค่า ตารางต่อไปนี้อธิบายตัวดำเนินการทั้งสองนี้
ตัวดำเนินการ | คำอธิบาย | ตัวอย่าง |
---|---|---|
ช่วงปิด | (a ... b) กำหนดช่วงที่วิ่งจาก a ถึง b และรวมค่า a และ b | 1 ... 5 ให้ 1, 2, 3, 4 และ 5 |
Half-Open Range | (a .. <b) กำหนดช่วงที่วิ่งจาก a ถึง b แต่ไม่รวม b | 1 .. <5 ให้ 1, 2, 3 และ 4 |
ช่วงด้านเดียว | a …กำหนดช่วงที่วิ่งจากจุดสิ้นสุดขององค์ประกอบ … a กำหนดช่วงเริ่มต้นจากจุดเริ่มต้นถึง |
1 …ให้ 1, 2,3 …จุดสิ้นสุดขององค์ประกอบ … 2 เริ่มต้น…ถึง 1,2 |
ตัวดำเนินการอื่น ๆ
Swift 4 รองรับตัวดำเนินการสำคัญอื่น ๆ รวมถึง rangeและ? : ซึ่งอธิบายไว้ในตารางต่อไปนี้
ตัวดำเนินการ | คำอธิบาย | ตัวอย่าง |
---|---|---|
Unary ลบ | สัญลักษณ์ของค่าตัวเลขสามารถสลับได้โดยใช้คำนำหน้า - | -3 หรือ -4 |
ยูนารีพลัส | ส่งคืนค่าที่ดำเนินการโดยไม่มีการเปลี่ยนแปลงใด ๆ | +6 ให้ 6 |
เงื่อนไข Ternary | เงื่อนไข ? X: ย | ถ้า Condition เป็นจริง? จากนั้นค่า X: หรือค่า Y |
ลำดับความสำคัญของตัวดำเนินการ
ลำดับความสำคัญของตัวดำเนินการกำหนดการจัดกลุ่มคำศัพท์ในนิพจน์ สิ่งนี้มีผลต่อวิธีการประเมินนิพจน์ ตัวดำเนินการบางอย่างมีลำดับความสำคัญสูงกว่าผู้อื่น ตัวอย่างเช่นตัวดำเนินการคูณมีลำดับความสำคัญสูงกว่าตัวดำเนินการบวก
ตัวอย่างเช่น x = 7 + 3 * 2; ที่นี่ x ถูกกำหนดให้เป็น 13 ไม่ใช่ 20 เนื่องจากตัวดำเนินการ * มีลำดับความสำคัญสูงกว่า + ดังนั้นจึงได้รับการคูณด้วย 3 * 2 ก่อนแล้วจึงเพิ่มเป็น 7
ที่นี่ตัวดำเนินการที่มีลำดับความสำคัญสูงสุดจะปรากฏที่ด้านบนสุดของตารางตัวดำเนินการที่มีค่าต่ำสุดจะปรากฏที่ด้านล่าง ภายในนิพจน์ตัวดำเนินการที่มีลำดับความสำคัญสูงกว่าจะได้รับการประเมินก่อน
ตัวดำเนินการ | คำอธิบาย | ตัวอย่าง |
---|---|---|
ตัวดำเนินการนิพจน์หลัก | () []. expr ++ expr-- | ซ้ายไปขวา |
ตัวดำเนินการ Unary | * & + -! ~ ++ expr --expr * /% + - >> << <> <=> = ==! = |
จากขวาไปซ้าย |
ตัวดำเนินการไบนารี | & ^ | && || |
ซ้ายไปขวา |
Ternary Operator | ?: | จากขวาไปซ้าย |
ผู้ดำเนินการมอบหมาย | = + = - = * = / =% = >> = << = & = ^ = | = | จากขวาไปซ้าย |
จุลภาค | , | ซ้ายไปขวา |