değil Some(Int)
Cast Opsiyon [Herhangi] Bir Int bu döküm nasıl
val a: Option[Any] = Some(1)
Ben toInt
çalıştı ve bu .asInstanceOf
yöntemi kullanarak bir hata value toInt is not a member of Option[Any]
değil Some(Int)
Cast Opsiyon [Herhangi] Bir Int bu döküm nasıl
val a: Option[Any] = Some(1)
Ben toInt
çalıştı ve bu .asInstanceOf
yöntemi kullanarak bir hata value toInt is not a member of Option[Any]
a.get.asInstanceOf[Int]
yapabilirdiniz, ancak bu güvenli değildir. Option[Any]
yerine Option[Int]
kullanarak tür bilgisini korumak daha iyi bir yol olacaktır. Ardından sonucu asInstanceOf
ile göndermeniz gerekmez. Option
bir None
ise bir istisnası atılır beri get
kullanma
val a:Option[Int] = Some(1)
val i = a.get
doğrudan güvensiz. Yani getOrElse
kullanmak daha güvenlidir. Ya da değeri almak için a
modelinde desen eşleştirmeyi kullanabilirsiniz.
val a:Option[Any] = Some(1) // Note using Any here
val i = (a match {
case Some(x:Int) => x // this extracts the value in a as an Int
case _ => Int.MinValue
})
verdi int
a.getOrElse(0).asInstanceOf[Int]
Bunun güvensiz döküm olduğunu not etmeliyim: Seçenekleriniz Int içeriyorsa, runt alırsınız ime istisnası.
Bunu yapamayacağınız nedeni, almanızın gerekmemesidir. Statik yazılan programlama dilleri bir tür ile diğeri arasında manuel olarak yayın yapmanıza izin verirken, size verebileceğim en iyi öneri bu özellikleri unutmaktır.
Özellikle, her bir programlama dilinden en iyi şekilde yararlanmak istiyorsanız, uygun bir kullanıcı yapmaya çalışın ve bir dil, kullanıma uygun değilse, başka bir tane seçin (dinamik olarak yazılanlar gibi). : Eğer yaparsanız
potansiyel bir derleme zamanı hatası, dönüş atmalarını hangi biz buna zamanında meydana çünkü biz sevmiyorum bir ClassCastException, içine, çözmek kolay olduğundan böyle . Scala'daki dökümleri kullanmanız gerekiyorsa, büyük olasılıkla yanlış bir model kullanıyorsunuzdur.
Ya da (kötü tasarlanmış) Java kütüphaneleri kullanıyorsunuz ... – ziggystar
Ben duyguları takdir ederken, gerçek hayat projelerinde, şeyler her zaman siyah ve beyaz değildir. Temel üçüncü taraf API'sı tarafından döndürülen 4 türden biri olabileceğinden bunu yapmam için meşru bir ihtiyaç var. – Bob
Bu çok zayıf bir mekanizmadır. Aynı şeyi daha iyi desenler ile yapabilirsiniz. Niçin yapmak istediğinizi açıklamaya çalışmıyorsunuz? – Edmondo1984
Döküm hakkında biraz unutun; desen eşleştirme açıkça gitmek için yoldur –
Katılıyorum. Desen eşleştirme çok güçlü ve harika :) –