Elvis Operatörü

The Safe Navigation Operator

Geçtiğimiz günlerde sevgili Üstün Özgür’le sohbet ederken konu Elvis Operatörü’ne geldi. Üstün bana Kotlin dilinden bahsederken bu konuyu gösterdi. Acaba Ruby’de var mı? derken mini bir yazı çıktı ortaya. Operatörün adının Elvis olması & şeklinin ne hikmetse Elvis’e benzemesindenmiş.

Peki ne işe yarıyor ? Aslında bir nesne içinde güvenli gezinti yapmayı sağlıyor.

User = Struct.new(:name, :address)
Address = Struct.new(:street, :city, :country)

User ve Address adında iki tane veri yapımız olsun.

vigo_nun_adresi = Address.new("Foobar caddesi", "İstanbul")
vigo = User.new("Uğur", vigo_nun_adresi)

Eğer country varsa bir işlem yapmak için;

if vigo && vigo.address && vigo.address.country
  puts "Ülkeniz: #{vigo.adress.country}"
end

gibi uzun bir kontrol önermesi yazmak gerekiyor. İşte Elvis burada devreye giriyor:

if vigo&.address&.country
  puts "Ülkeniz: #{vigo.adress.country}"
end

Yani &. operatörü yardımıyla bir tür nesne içinde dolaşabiliyoruz. Bu özellik C# ve benzeri dillerde zaten uzunca bir süredir varmış. Merak edenler linkten detayları okuyabilirler.

Elvis fotoğrafı immortal.org sitedinen alınmıştır.