Operator Ternary dan evaluasi malas

Apakah operator ternary merupakan contoh evaluasi malas? Jika kita mengasumsikan cuplikan kode seperti: Variable = Condition ? fungsi1(param): fungsi2(param); Bisakah ini menjadi contoh evaluasi yang malas?


person Swapnil B.    schedule 08.07.2015    source sumber


Jawaban (1)


Dalam sebagian besar bahasa - ya, ini dievaluasi dengan malas. Namun belum tentu demikian keadaannya. Dari Wikipedia:

Perhatikan bahwa beberapa bahasa mungkin mengevaluasi 'keduanya' ekspresi benar dan salah, meskipun hanya satu atau lainnya yang akan ditetapkan ke variabel. Artinya jika ekspresi benar atau salah berisi pemanggilan fungsi, fungsi tersebut dapat dipanggil dan dijalankan (menyebabkan efek samping terkait karena eksekusi fungsi), terlepas dari apakah hasilnya akan digunakan atau tidak.

Misalnya, di Delphi tidak dievaluasi dengan malas:

Berbeda dengan operator ternary yang sebenarnya, kedua hasil dievaluasi sebelum melakukan perbandingan. Misalnya, jika salah satu hasilnya adalah panggilan ke fungsi yang menyisipkan baris ke dalam tabel database, fungsi tersebut akan dipanggil terlepas dari kondisi untuk mengembalikan hasil spesifik tersebut terpenuhi atau tidak.

person MaMazav    schedule 08.07.2015