Mənimsətmə operatoru

Mənimsətmə – proqramlaşdırmada dəyişənlər ilə onların qiymətləri arasında əlaqələri dinamik olaraq dəyişməyə imkan verən mexanizmdir. Aydındır ki, qiymətin dəyişdirilməsi mənimsətmə əməliyyatının nəticəsidir və bir çox proqramlaşdırma dillərində bu əməliyyatın özü də müəyyən nəticə (adətən, mənimsədilən qiymətin eynisini) qaytarır. Fiziki olaraq isə mənimsətmə kompüterin yaddaşı və ya prosessorunun reqistrlərinə yazmaq və ya yenidən yazmaqdan ibarətdir.

Əvvəlki mövzularda bu operatorla rastlaşmışıq və PHP-də onun yazılış forması bərabər işarəsi – “=” kimidir. Sadə mənimsətmə əməliyyatının ümumi sintaksisi $dəyişənin_adı = qiymət; formasındadır. Əslində mənimsətmə əməliyyatının yazılış simvolunun seçilməsi proqramlaşdırma dillərinin yaradıcıları arasında çox mübahisələrə səbəb olur. Belə bir fikir var ki, = işarəsindən mənimsətməni işarələmək üçün istifadə edilməsi proqramlaşdırma dilinə iki operandın müqayisəsi üçün əlavə == işarəsini gətirməyə məcburiyyət yaradır və bu, proqramçıları dolaşığa salır, nəticədə mənimsətmə operatoru müqayisə operatoru ilə səhf salınır.

Bəzi dillərdə, məsələn C dilində if (a == b) { ... } əvəzinə if (a = b) { ... } yazsaq, yəni bilməyərəkdən = işarəsinin birini buraxmış olsaq kompilyator ən azı xəbərdarlıq göstərəcək. PHP-də isə məsələ fərqlidir. Bunu özünüzün də yoxlamağınız məsləhətdir.

$a = 0; $b = 0;
if($a = $b) echo "a və b eynidir";
else  echo "a və b fərqlidir";

İnterpretator heç nə hiss etdirməyəcək və proqram əminliklə “a və b eynidir” olduğunu bildirəcək. Göründüyü kimi proqram heç də düzgün nəticəni vermir. Buna səbəb $a = $b yazılışının məsələn, $a + $b kimi bir ifadə olmasıdır və bu yazılışın nəticəsi mənimsətmə operatorunun sağ tərəfinin qiymətinə, bizim halda 1-ə bərabərdir. Buna görə də belə məsələlərdə diqqətli olmaq mütləqdir.

Leave a Reply