Ruby'de tuples kullanan var mı? Eğer öyleyse, nasıl bir tuple uygulayabilir? Ruby hash'ları güzel ve neredeyse işe yarayacak, ama bakmak istediğiniz değeri bulmak için .
notasyonunu kullanabileceğiniz Python'daki Tuple sınıfı gibi bir şey görmek isterim. Bunu istiyorum, böylece Python için Dee'a benzer bir D uygulaması yaratabileyim.Ruby'de Tuples Kullanımı?
cevap
Kısa örnek: hash değerleri ve söz gerçeğine dayanarak
require 'ostruct'
person = OpenStruct.new
person.name = "John Smith"
person.age = 70
person.pension = 300
puts person.name # -> "John Smith"
puts person.age # -> 70
puts person.address # -> nil
Bu, tam olarak aradığım _exactly_. Teşekkürler! –
np :) size soru cevaplamak için: hayır açık ya da başka olarak, ruby içinde tuples kullanmayın. Ben yüksek ucunda sınıfları ve alt sonunda hashes kullanıyorum :) –
bu bir zayıf cevap, sadece bir bağlantı? Ciddi anlamda? Bağlantı koptuğunda ne olur? –
. notasyon, (1. "a")
sortinden farklı bir tür tuple demek istediğimi farz edeceğim. Muhtemelen Struct
sınıfını arıyorsun. örneğin:
Person = Struct.new(:name, :age)
me = Person.new
me.name = "Guy"
me.age = 30
Bu yakın, ama onu adlandırmak bana hata veriyor. Ben (1. "a") sıralama gibi bir şey arıyordum ama tanımladığınız özellik get/set notasyonu ile. –
@panesofglass, hiçbir şeye gerek yok: a = Struct.new (: name,: age) .new; a.name = "Guy" – paradoja
"a = Struct.new (: name,: age)" ve daha sonra a.new diyebilir miyim? Sanırım öyle olur. Bunu kontrol etmeliyim. İstediğime göre çok daha açık olurdu. –
bu (üyelerin Nokta gösterimini yapamaz), sık sık yakut pass-by olmanın sorunları çözecek bir listeden değişkenlerin listesini atayabilirsiniz kesinlikle tuple olmasa da bir geri dönüş değerleri listesinden geçtiğinizde değer.
E.g.
:linenum > (a,b,c) = [1,2,3]
:linenum > a
=> 1
:linenum > b
=> 2
:linenum > c
=> 3
Sen Strüktür kırıcı ile benzer bir şey yapabilirim: beklendiği gibi bu 3
yazdırır
def something((a, b))
a + b
end
p something([1, 2])
.
Ben Gem for Ruby tuples yazarım.
İki sınıfları ile sağlanır:
Tuple
Pair
genel olarak belirli
farklı şekillerde onları başlatabilir:
Tuple.new(1, 2)
Tuple.new([1, 2])
Tuple(1, 2)
Tuple([1, 2])
Tuple[1, 2]
Her iki sınıfların bazı yardımcı yöntemleri vardır:
length
/arity
- tuplefirst
/last
/second
(sadece çifti) içindeki değerler numarası verir - karşılık gelen elemanlar döner size özel elemanlarına bir erişim sağlar[]
Scala alaylarına bu numara ile alay edebilirsiniz:
Tuple = Struct.new(:_1, :_2)
2.2.5 :003 > t = Tuple.new("a", "b")
=> #<struct Tuple _1="a", _2="b">
2.2.5 :004 > t._1
=> "a"
2.2.5 :005 > t._2
=> "b"
ancak burada olamaz strüktür:
2.2.5 :012 > a, b = t
=> {:_1=>"a", :_2=>"b"}
2.2.5 :013 > a
=> {:_1=>"a", :_2=>"b"}
2.2.5 :014 > b
=> nil
Ama teşekkürler bu hile için: https://gist.github.com/stevecj/9ace6a70370f6d1a1511 strüktür çalışacaktır:
2.2.5 :001 > Tuple = Struct.new(:_1, :_2)
=> Tuple
2.2.5 :002 > t = Tuple.new("a", "b")
=> #<struct Tuple _1="a", _2="b">
2.2.5 :003 > t._1
=> "a"
2.2.5 :004 > class Tuple ; def to_ary ; to_a ; end ; end
=> :to_ary
2.2.5 :005 > a, b = t
=> #<struct Tuple _1="a", _2="b">
2.2.5 :006 > a
=> "a"
2.2.5 :007 > b
=> "b"
- 1. Bir listeye tuples ekleme
- 2. Artırma yeni tuples girilen değer,
- 3. Bir öğenin tuples listesiyle eşleşmesi
- 4. Listelerin sözlüğünü tuples sözlüğüne dönüştürün
- 5. Sözlük için Tuples listesi (C#) en kısa yoldan dönüştürmek için Tuples 'in Sözlük
- 6. C++ 0x Tuples Elements Öğeleri Geriye doğru
- 7. coffeescript python'da "tuples" gibi nasıl açılacaksınız
- 8. Django modellerinde model tuples alanı nasıl saklanır?
- 9. pyspark kullanarak tuples listesinden DataFrame oluştur
- 10. Böyle 2-dizilerini listesi var 2-Tuples
- 11. Bu Tuples için Inlining neden çalışmıyor?
- 12. Linq kullanarak IEnumerables'tan Tuples oluşturabilir miyim?
- 13. Kullanımı
- 14. Kullanımı
- 15. Kullanımı
- 16. Kullanımı
- 17. Tuples, Python'daki modül seviyesi sabitleri için listelerden mi?
- 18. F # tuples kuralıyla eşleşen desen hiçbir zaman eşleşmeyecek
- 19. İç içe geçirilmiş tuple indeksiyle 2d tuples boyunca yineleme
- 20. Kolay, kullanımı kolay LRU önbellek kullanımı java
- 21. UTL_FILE sunucu tarafı kullanımı/istemci tarafında kullanımı
- 22. soket getirme web sayfası kullanımı python kullanımı
- 23. TabWidget.setDividerDrawable() Kullanımı?
- 24. nlog.xml kullanımı
- 25. Bellek kullanımı
- 26. NSDictionary kullanımı
- 27. MySQL kullanımı()
- 28. kAudioSessionProperty_OverrideCategoryMixWithOthers kullanımı
- 29. cmake kullanımı
- 30. Assert.Inconclusive kullanımı
Hiç Ruby D uyguladınız mı? Eğer öyleyse, bunun bağlantısı var mı? Son zamanlarda benzer bir şey üzerinde çalışıyorum ve şimdiye kadar neler yaptığınızı görmek isterim. – dkubb
Nope; Bu kadar uzağa gitmedim. Ona geri dönmeye çalışan başka şeylerin arasında dolanıyordum. Yardımcı olabilecekleri birkaç kütüphane buldum: LazyList and arel. Temelde .NET'deki LINQ'un neredeyse orada olduğu sonucuna vardım, sonra da yakın olan arel'i buldum. LazyList'i kullanarak ve doğrudan SQL'e dönüştürebilme, ki bunun da bir proje hedefi olması neredeyse sizi oraya götürecektir. Bu, şimdiye kadar sahip olduğunuz şeyi görmeyi çok isterim dedi. Hala geri dönmekten biraz uzaktayım. –
hırs bir başka ilginç görünümlü kütüphanedir, ancak bir süre içinde güncellenmemiştir. İlk önce bulduğum şey buydu. arel aynı gelenekte devam etmiş gibi görünüyor. –