Her zaman ihtiyacım olan her zaman hat uzun tuple tanımını tekrarlamak benim için çok iyi görünmüyor. Sadece adını ve tür adı olarak kullanabilir miyim? onun alanlarını isim güzel de yerine ilk soruya gelince ._1, ._2 vbScala 2.8'de bir tuple ismini verebilir miyim?
cevap
kullanarak olur, sadece bir tip takma adı kullanabilirsiniz: tabii ki,
type KeyValue = (Int, String)
Ve Scala bir olduğunu bu kadar
case class KeyValue(key: Int, value: String) extends (Int, String)(key, value)
: nesne yönelimli bir dil, bu nedenle bir tuple uzmanlaşmak konusunda ikinci ilişkin, sihirli kelime miras olduğunu. Sınıfın bir vücuda bile ihtiyacı yoktur.
val kvp = KeyValue(42, "Hello")
kvp._1 // => res0: Int = 42
kvp.value // => res1: String = "Hello"
Bununla birlikte, (Tuple2
olan) örnek sınıfları devralan, kaldırıldı ve ileride izin edilebilir. Burada yukarıdaki sınıf tanımı için olsun uyarı derleyici var:
uyarı: vaka sınıfı
class KV
vaka sınıf atasıclass Tuple2
sahiptir. Bu, hem kullanımı hem de uygulamayı gereksiz yere karmaşıklaştırdığı için kullanımdan kaldırılmıştır. Bunun yerine yapraksız düğümlerde desen eşleşmesi için ekstraktör kullanmalısınız.
Tür diğer adı, Tuple adlandırma için iyidir, ancak bunun yerine bir sınıf sınıfı kullanmayı deneyin. Sen
Örnek tuple ile adlandırılmış parametreleri kullanmak mümkün olacak: Bir vaka sınıfında ile
def foo(a : Int) : (Int, String) = {
(a,"bar")
}
val res = foo(1)
val size = res._1
val name= res._2
:
case class Result(size : Int , name : String)
def foo(a : Int) : Result = {
Result(a,"bar")
}
val res = foo(1)
val size = res.size
val name= res.name
İşte tip takma ad ve fabrika nesnesi yaratan bir çözümdür.
scala> type T = (Int, String)
defined type alias T
scala> object T { def apply(i: Int, s: String): T = (i, s) }
defined module T
scala> new T(1, "a")
res0: (Int, String) = (1,a)
scala> T(1, "a")
res1: (Int, String) = (1,a)
Ancak, başkalarının da belirttiği gibi, muhtemelen bir vaka sınıfı oluşturmanız gerekir. Diğerleri söyledikleri gibi, genel anlamda en iyi (açık) sınıflar en iyisi olmakla birlikte,
.
def incrementPair(pair: (Int, Int)) : (Int, Int) = {
val (first, second) = pair
(first + 1, second + 1)
}
- 1. Scala: Paralel atanması Tuple
- 2. Scala - İki Listeleme Tuple Listesi
- 3. Scala Yinelenebilir [tuple] dönüştürme RDD
- 4. Scalding map metodunda bir tuple yerine koleksiyon toplayabilir miyim?
- 5. Verileri AWS S3'e FTP'ye verebilir miyim?
- 6. Resim dosyasından URI ismini alabilir miyim?
- 7. Scala
- 8. Hızlı düzeltme penceresine vim'de farklı bir durum satırı verebilir miyim?
- 9. Bir işlev çağrısının yumuşak kodlanmasına izin verebilir miyim?
- 10. İsmini
- 11. Bir dışa aktarma ismini es6 modülünde değiştirebilir miyim?
- 12. Bir tuple içindeki bir tuple tekrarlayın
- 13. gnu ekran: son çağrılan programdan sonra otomatik olarak bir pencere ismini verebilir misiniz?
- 14. Scala: Bir Seçeneği varargs'a dönüştürebilir miyim?
- 15. Bir adrese objdump verebilir miyim ve içerdiği işlevi parçalarına ayırabilir miyim?
- 16. Yalnızca django yöneticisinde kullanıcı için görüntüleme izni verebilir miyim?
- 17. Symfony 2 servisine çerezleri okuma ve yazma yeteneği verebilir miyim?
- 18. Json.NET'e belirli özellikleri seri hale getirip serileştirmemesi talimatı verebilir miyim?
- 19. Tanımlayıcı test isimlerini Selenium/Gherkin/Cucumber'de verebilir miyim?
- 20. WPF'deki Fare Tıklaması olayında açıklık gösterme ipucu verebilir miyim?
- 21. Scala
- 22. Bir JS nesnesi özellik ismini
- 23. Bir parametrenin varsayılan değeri başka bir parametreye nasıl referans verebilir?
- 24. Scala'da bilinmeyen boyutta bir tuple eşleştirin
- 25. Neden ve ne zaman bir yöntem ismini takip etmem gerekiyor?
- 26. Python Tamsayılı olarak tuple sıralama
- 27. scala - Curried yöntemlerini aşırı yükleyebilir miyim?
- 28. Tabloyu bir çalışan SP'den alabilir ve SQL Server'da başka bir SP'ye verebilir miyim?
- 29. Scala
- 30. Dize Tuple
tuples hızlı durumunda daha çalışmayın: bir demet dönen bir yöntem Verilen
: ne yapabileceğini lokalize senaryolar için Ancak
kod okunabilirliği artırmak için tuple extractor kullanmaktır sınıflar? Görev, büyük miktarlarda basit verilerin karmaşık bir şekilde işlenmesi, bir çeşit sayı-çatırdamadır. – Ivan
@Ivan: Tuples * * vaka sınıfları, değil mi? –
Tupleler gerçekten örnek derslerdir! –