ตัวดำเนินการแบบไตรภาคและการประเมินแบบขี้เกียจ

ตัวดำเนินการแบบไตรภาคเป็นตัวอย่างของการประเมินแบบสันหลังยาวหรือไม่? หากเราถือว่าข้อมูลโค้ดเช่น: Variable = Condition ? function1(พารามิเตอร์) : function2(พารามิเตอร์); เป็นตัวอย่างการประเมินแบบขี้เกียจได้หรือไม่?


person Swapnil B.    schedule 08.07.2015    source แหล่งที่มา


คำตอบ (1)


ในภาษาส่วนใหญ่ - ใช่ มันถูกประเมินอย่างเกียจคร้าน อย่างไรก็ตาม มันไม่จำเป็นต้องเป็นสถานการณ์เสมอไป จาก วิกิพีเดีย:

โปรดทราบว่าบางภาษาอาจประเมิน 'ทั้ง' นิพจน์จริงและเท็จ แม้ว่าจะกำหนดให้ตัวแปรเพียงอย่างใดอย่างหนึ่งเท่านั้น ซึ่งหมายความว่าหากนิพจน์จริงหรือเท็จมีการเรียกใช้ฟังก์ชัน ฟังก์ชันนั้นอาจถูกเรียกใช้และดำเนินการ (ทำให้เกิดผลข้างเคียงใดๆ ที่เกี่ยวข้องอันเนื่องมาจากการทำงานของฟังก์ชัน) โดยไม่คำนึงว่าผลลัพธ์ของฟังก์ชันจะถูกใช้หรือไม่ก็ตาม

ตัวอย่างเช่น ใน Delphi ไม่ได้รับการประเมินอย่างเกียจคร้าน:

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

person MaMazav    schedule 08.07.2015