to_s vs to_str (ve to_i/to_a//to_ary/to_hash vs to_int to_h) Ruby
Öğreniyorum, Ruby ve gördüm bir kaç yöntem vardır kafa karıştırıcı biraz, özellikle to_s
vs to_str
(ve benzer şekilde, to_i
/to_int
, to_a
/to_ary
, & to_h
/to_hash
). Okudum ne kadar kısa formu (*8 örneğin*) uzun form örtülü dönüşüm için yaparken açıkça dönüştürmeleri için olduğunu açıklar.
Gerçekten to_str
aslında kullanılacak anlamıyorum. Bir Dize dışında hiç to_str
tanımlardı? Bu yöntem için pratik bir uygulama verebilir misiniz?
CEVAP
Not ilk hepsi bu geçerlidir her çifti “kısa” (örneğin to_s
/to_i
/to_a
/to_h
) vs “uzun” (örneğin to_str
/to_int
/to_ary
/to_hash
) zorlama yöntemleri Yakut (kendi türleri) gibi hepsi aynı semantiği.
Farklı anlamları var. Senin de bir itirazın yoksa to_str
uygulamak değilgörürbir dize gibi, yerinegösterilebilirbir dize gibi. to_str
uygulayan tek çekirdek sınıf Dizesi kendisi.
DanProgramlama Ruby(tüm okunmaya değer this blog post) alıntı:
[
to_i
to_s
] özellikle katı: eğer bir nesnenin bir çeşit terbiyeli temsili olarak bir dize, örneğin, muhtemelen birto_s
yöntem... [to_int
to_str
] katı dönüşüm fonksiyonlar uygulamak onları yalnızca [] nesne olabilir doğal olarak kullanılan her yerde bir dize veya tamsayı olabilir kullanılır.
Older Ruby documentation from the Pickaxe bunu söylemek için:
Neredeyse tüm sınıfları tarafından desteklenen
to_s
,,to_str
normalde dizeleri gibi hareket eden bu sınıflar tarafından yürütülmektedir aksine.
Örneğin, ek olarak Integer, hem Float & Numeric uygulamak to_int
(to_i
'In eşdeğer to_str
) çünkü ikisini de kolaylıkla yerine bir Tamsayı (hepsi aslında sayı). Sınıfınızın Dize ile aynı şekilde sıkı bir ilişki olmadıkça, to_str
uygulamak değil.
Neden bu Ruby nesne iki to_s var ve gö...
Arasındaki fark "ve" ve && R...
Yakalama-c Ctrl ruby...
Ruby strftime: başında sıfır olmadan A...
Ruby benim komut temel bir yöntem tanı...