- ตัวดำเนินการกำหนดค่าเป็นสิ่งสำคัญในการกำหนดค่าให้กับตัวแปรในการเขียนโปรแกรม
- มีตัวดำเนินการผสมที่ทำให้โค้ดเรียบง่ายขึ้นและปรับปรุงการอ่านได้ง่าย
- ตัวดำเนินการระดับบิตช่วยให้จัดการข้อมูลระดับต่ำได้อย่างมีประสิทธิภาพ
- การรู้ถึงความแตกต่างของตัวดำเนินการระหว่างภาษาต่างๆ ถือเป็นกุญแจสำคัญของการเขียนโปรแกรมที่มีประสิทธิภาพ
ผู้ประกอบการที่ได้รับมอบหมาย
ตัวดำเนินการกำหนดค่าเป็นเหมือนกาวที่ยึดโค้ดของเราเข้าด้วยกัน หากไม่มีสิ่งเหล่านี้ การเขียนโปรแกรมก็คงเป็นกระบวนการที่น่าเบื่อและเสี่ยงต่อข้อผิดพลาด แต่กับพวกเขาเราสามารถแสดงความคิดที่ซับซ้อนได้อย่างชัดเจนและมีประสิทธิผล
จากคนธรรมดาๆ = ไปจนถึงสิ่งที่แปลกใหม่ที่สุดเช่น <<= o ??=แต่ละผู้ประกอบการมีสถานที่และเวลาของตัวเอง สิ่งสำคัญคือการรู้ว่าเมื่อใดและอย่างไรจึงควรใช้สิ่งเหล่านี้เพื่อให้โค้ดของเราไม่เพียงทำงานได้ แต่ยังสวยงามและมีประสิทธิภาพอีกด้วย
แนวทางปฏิบัติที่ดีและข้อผิดพลาดทั่วไปเมื่อใช้ตัวดำเนินการกำหนดค่า
ตอนนี้เราได้เห็นตัวดำเนินการกำหนดค่าที่หลากหลายแล้ว เรามาพูดถึงวิธีใช้ให้มีประสิทธิภาพและข้อควรระวังที่ควรหลีกเลี่ยงกันดีกว่า
การเพิ่มประสิทธิภาพโค้ดด้วยตัวดำเนินการกำหนดค่า
การใช้ตัวดำเนินการกำหนดค่าอย่างชาญฉลาดสามารถทำให้โค้ดของคุณมีประสิทธิภาพมากขึ้นและอ่านง่ายขึ้น เคล็ดลับบางประการมีดังนี้:
- ใช้ตัวดำเนินการแบบผสมเมื่อใดก็ตามที่เป็นไปได้: ค่อนข้าง
x = x + 5, ใช้x += 5- มันสั้นกว่าและสื่อถึงความตั้งใจได้ดีกว่า - ใช้ประโยชน์จากตัวดำเนินการบิตสำหรับการทำงานที่รวดเร็ว:การคูณหรือหารด้วยเลขยกกำลัง 2 ตัวดำเนินการเลื่อนบิตจะเร็วกว่ามาก คุณสามารถทำความเข้าใจแนวคิดเหล่านี้ได้ดีขึ้นในหัวข้อ ระบบดิจิตอล.
- รวมการดำเนินการเมื่อมันสมเหตุสมผล: ตัวอย่างเช่น,
total += precio * cantidadมีประสิทธิภาพมากกว่าการคูณและบวกในขั้นตอนแยกกัน
หลุมพรางที่ต้องหลีกเลี่ยง: ความสับสนและข้อผิดพลาดทั่วไป
แม้แต่โปรแกรมเมอร์ที่มีประสบการณ์ก็สามารถทำผิดพลาดกับตัวดำเนินการกำหนดค่าได้ ต่อไปนี้เป็นสิ่งที่พบบ่อย:
- สับสน
=กับ==:นี่เป็นเรื่องคลาสสิคx = 5กำหนดค่า 5 ให้กับ x ในขณะที่x == 5เปรียบเทียบ x กับ 5 ใช้=ในสภาวะหนึ่งก็สามารถก่อให้เกิดผลลัพธ์ที่ไม่คาดคิดได้ - การลืมลำดับการดำเนินการ: ใน
x *= y + 1, ขั้นแรกก็เสร็จแล้วy + 1จากนั้นก็คูณ หากคุณต้องการคูณ x ด้วย y จากนั้นบวก 1 คุณต้องใช้เครื่องหมายวงเล็บ:x = (x * y) + 1. - สมมติว่าภาษาทั้งหมดมีตัวดำเนินการเดียวกัน:ไม่ใช่ภาษาทุกภาษาที่รองรับตัวดำเนินการกำหนดค่าทั้งหมด โปรดตรวจสอบตัวดำเนินการที่คุณใช้เสมอ
ตัวดำเนินการกำหนดค่าในภาษาการเขียนโปรแกรมที่แตกต่างกัน
คุณรู้ไหมว่าตัวดำเนินการกำหนดค่าสามารถแตกต่างกันไปในแต่ละภาษาการเขียนโปรแกรม แม้ว่าหลายอย่างจะเหมือนกัน แต่ก็ยังมีความแตกต่างที่น่าสนใจบางประการที่ควรทราบ
การเปรียบเทียบ: JavaScript กับ Python กับ ซี++
มาดูทัวร์แบบรวดเร็วว่าตัวดำเนินการกำหนดค่าได้รับการจัดการอย่างไรในสามภาษายอดนิยมเหล่านี้:
- JavaScript:
- มีตัวดำเนินการกำหนดค่าว่าง (
??=). - อนุญาตให้เชื่อมโยงการมอบหมาย:
a = b = c = 5. - มีตัวดำเนินการกำหนดค่าเลขชี้กำลัง (
**=).
- มีตัวดำเนินการกำหนดค่าว่าง (
ให้ a, b, c;
a = b = c = 5; // ตัวแปรทั้งหมดเป็น 5 แล้ว
ให้กำลัง = 2;
กำลัง **= 3; // กำลังตอนนี้คือ 8 (2^3)
- หลาม:
- ไม่มีตัวดำเนินการกำหนดค่า null
- มีการกำหนดงานหลายอย่าง:
a, b = 1, 2. - ประเทศสหรัฐอเมริกา
:=เป็นตัวดำเนินการกำหนดค่าในนิพจน์ ("ตัวดำเนินการวอลรัส" ที่มีชื่อเสียง)
x = y = 10 # ตัวแปรทั้งสองมีค่าเท่ากับ 10
a, b = 1, 2 # a เป็น 1, b เป็น 2
if (n := len(list)) > 10: # กำหนดและเปรียบเทียบในหนึ่งบรรทัด
พิมพ์(f»รายการยาว: {n} องค์ประกอบ»)
- C + +:
- มีตัวดำเนินการระดับบิตทั้งหมด (
&=,|=,^=,<<=,>>=). - มันช่วยให้สามารถโอเวอร์โหลดตัวดำเนินการได้ ซึ่งหมายความว่า คุณสามารถกำหนดได้ว่าตัวดำเนินการเหล่านี้ทำงานอย่างไรสำหรับคลาสของคุณเองได้
- มีตัวดำเนินการระดับบิตทั้งหมด (
int flag = 0b1010;
flags &= 0b1100; // flags ตอนนี้คือ 0b1000
คลาส MyClass {
ส่วนกลาง:
ตัวดำเนินการ MyClass&+=(const MyClass& อื่น ๆ) {
// กำหนดวิธีการทำงานของ += สำหรับคลาสนี้
กลับ *สิ่งนี้;
}
};
ความหลากหลายนี้แสดงให้เห็นว่าแต่ละภาษาปรับตัวตามความต้องการเฉพาะของผู้ใช้อย่างไร การทราบถึงความแตกต่างเหล่านี้จะช่วยให้คุณเลือกภาษาที่เหมาะสมสำหรับแต่ละงานและปรับตัวได้อย่างรวดเร็วเมื่อสลับระหว่างงานต่างๆ
อนาคตของผู้ดำเนินการมอบหมาย
คุณเคยสงสัยไหมว่าผู้ดำเนินการกำหนดกำลังมุ่งหน้าไปที่ไหน แม้ว่าอาจดูเหมือนเป็นสิ่งที่ได้รับการยอมรับค่อนข้างมาก แต่โลกของการเขียนโปรแกรมกำลังพัฒนาอย่างต่อเนื่อง และตัวดำเนินการกำหนดค่าก็ไม่มีข้อยกเว้น
แนวโน้มและวิวัฒนาการที่เป็นไปได้ในภาษาสมัยใหม่
- ผู้ปฏิบัติงานแสดงออกได้มากขึ้น:ภาษาบางภาษากำลังสำรวจวิธีที่จะทำให้ตัวดำเนินการกำหนดค่ามีประสิทธิภาพและแสดงออกได้มากยิ่งขึ้น เช่น ผู้ดำเนินการท่อ (
|>) ในภาษาฟังก์ชันบางภาษา แม้จะไม่ใช่ตัวดำเนินการกำหนดค่าโดยเฉพาะ แต่ก็เปลี่ยนวิธีคิดของเราเกี่ยวกับการกำหนดค่าและการไหลของข้อมูล - การมอบหมายงานด้วยรูปแบบภาษาเช่น Rust และ Swift กำลังนำรูปแบบการกำหนดขั้นสูงมาใช้ ซึ่งช่วยให้สามารถแบ่งโครงสร้างที่ซับซ้อนออกเป็นโค้ดบรรทัดเดียวได้ นี่ทำให้ การทำงานกับโครงสร้างข้อมูล สิ่งที่ซับซ้อนจะง่ายกว่าและอ่านได้ง่ายกว่ามาก
- ผู้ดำเนินการกำหนด "สมาร์ท":เราจะได้เห็นผู้ประกอบการที่ปรับตัวตามบริบท ตัวอย่างเช่น ตัวดำเนินการที่ตัดสินใจโดยอัตโนมัติว่าจะเชื่อมต่อสตริงหรือเพิ่มตัวเลขตาม ประเภทข้อมูล.
- การบูรณาการกับประเภทข้อมูลสมัยใหม่ด้วยการเพิ่มขึ้นของประเภทข้อมูลที่ไม่เปลี่ยนแปลงในการเขียนโปรแกรมเชิงฟังก์ชัน เราอาจได้เห็นตัวดำเนินการกำหนดค่าใหม่ๆ ที่ทำงานได้อย่างมีประสิทธิภาพมากขึ้นกับโครงสร้างเหล่านี้
- ตัวดำเนินการกำหนดค่าสำหรับการเขียนโปรแกรมพร้อมกัน:เนื่องจากการเขียนโปรแกรมแบบขนานกลายเป็นเรื่องธรรมดามากขึ้น ผู้ดำเนินการใหม่ๆ อาจเกิดขึ้นเพื่อจัดการการกำหนดในสภาพแวดล้อมมัลติเธรดอย่างปลอดภัย
# ตัวดำเนินการสมมติฐานสำหรับการกำหนดอะตอม
ตัวนับ @= 1 # เพิ่มอย่างปลอดภัยในสภาพแวดล้อมมัลติเธรด
แนวโน้มเหล่านี้แสดงให้เราเห็นว่า ตัวดำเนินการกำหนดค่าไม่ได้เป็นเพียงหัวข้อปิดเท่านั้น แต่ยังพัฒนาต่อไปเพื่อให้โค้ดของเราแสดงออกได้ปลอดภัยและมีประสิทธิภาพมากขึ้น