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 ?: จากขวาไปซ้าย
ผู้ดำเนินการมอบหมาย = + = - = * = / =% = >> = << = & = ^ = | = จากขวาไปซ้าย
จุลภาค , ซ้ายไปขวา