Ruby'nin temellerini öğreniyorum (sadece başlangıç) ve Hash.[]
method ile karşılaştım. Biraz düşünceyleRuby sözdizimsel şeker için "kurallar" var mı?
a = ["foo", 1, "bar", 2]
=> ["foo", 1, "bar", 2]
Hash[*a]
=> {"foo"=>1, "bar"=>2}
ile tanıtıldı, ben Hash[*a]
Hash.[](*a)
veya Hash.[] *a
denk olduğunu anladım. Benim sorum bu yüzden durum buydu. Bu, *a
'u köşeli parantez içine koymanıza izin verir ve "o" ifadesinin nerede ve ne zaman kullanılabileceği konusunda bir kural var mı?
Düzenleme: Benim ifadeler bazı karışıklıklara neden olmak gibi görünüyor. Dizi genişlemesini sormuyorum. Anladım. Sorum şu: Temel olarak []
bir yöntem ismidir, neden argümanları parantez içine koymak sorun olur? ama tamamen değil - - Neredeyse görünüyor Eğer bir yöntem Foo.dood
varsa ve buna dize "hey"
geçmek istediğini söyleyerek gibi, o zaman Foo.do"hey"od
yazabiliriz.
Bir yöntem çağırma işleminde * a'ya odaklanan birçok yanıt görüyorum. Ancak, [1, * a] 'nın neden beklendiği gibi çalıştığı ([1, a]' dan farklı bir sonuç veren) ve neden [* a,] gibi diğer prodüksiyonları da görmek güzel olurdu. 1] geçersiz. Ayrıca "uyarının" ödevle nasıl bağlantılı olduğunu ve Ruby'nin ödev-dekompozisyonu ile nasıl etkileşime gireceğini/nasıl etkileşime girdiğini görmek de hoş olurdu ... belki de belki de tamamen farklı bir SO sorusu ;-) Olsaydı * gerçekten güzel olurdu * yarı resmi yakut belirtimi. Yarı spesifikasyonlara bağlantılar, cevapları daha iyi hale getirecektir. –
@pst: iyi sorular. Bu konuda yeni bir soru sorarsanız, bağlantıyı buradan takip edebilirim. –
her zamanki yolun bir çiftler dizisi göndererek kullandığını unutmayın: Hash [[[anahtar1, değer1], [anahtar2, değer2]]] – tokland