this one gibi sorulardan gelen cevapların, NPE'yi yakalamaya çalışmak ve yığın izini yığın izinden dışarı atmak gibi korku gösterileriyle birlikte gördüğünü gördüğümde, bu soruyu soruyorum. Yorumlar veya daha fazla iyileştirme hoş geldiniz. böylece gibiScala'da null güvenli bir birleştirme operatörü nasıl yazılır?
20
A
cevap
33
:
case class ?:[T](x: T) {
def apply(): T = x
def apply[U >: Null](f: T => U): ?:[U] =
if (x == null) ?:[U](null)
else ?:[U](f(x))
}
Ve eylemde: Yeni bir topluluk oluşturmak yerine bu soruyu cevap olmalıydı
scala> val x = ?:("hel")(_ + "lo ")(_ * 2)(_ + "world")()
x: java.lang.String = hello hello world
scala> val x = ?:("hel")(_ + "lo ")(_ => (null: String))(_ + "world")()
x: java.lang.String = null
İlgili konular
- 1. null değerinde iç birleştirme
- 2. Birleştirme sorgusu içinde alt sorgu nasıl yazılır?
- 3. HQL kullanarak 'null' sütuna nasıl yazılır?
- 4. Scala kısa ve güvenli kasa operatörü
- 5. Garip operatör önceliği ?? (null coletcing operatörü)
- 6. Twig null coletce operatörü var mı?
- 7. Asansörde/Scalada MVC
- 8. Scalada eşleşen desen
- 9. Scalada örtülü kaldırma
- 10. Scalada spark.implicits._ içe aktarılıyor
- 11. Scalada Haskell FixF tanımlanması
- 12. ElasticSearch: Dize alanının null veya boş olduğu sorgu nasıl yazılır?
- 13. Bir işaretçinin kendisi nasıl NULL yapar?
- 14. null olmayan kitaplıklar ile strictNullChecks nasıl kullanılır? Güvenli
- 15. Bir linq sonucundan tüm sütunları nasıl birleştirme ile birleştirme
- 16. Dolar işareti, scalada ne yapar
- 17. PHP'de bir dize ile null değerini birleştirmek güvenli midir?
- 18. Parola korumalı bir sınıf nasıl yazılır?
- 19. Null coletcing operatörü veren Belirtilen cast geçerli değil int
- 20. Birleştirme Nasıl Java
- 21. Python'da bir kabuk nasıl yazılır
- 22. PHP'de bir dosyaya nasıl yazılır?
- 23. C++: Bir const_iterator nasıl yazılır?
- 24. Harita bir parsele nasıl yazılır?
- 25. Bir bit akışı nasıl yazılır
- 26. Bir dosyaya byteArray nasıl yazılır?
- 27. operatörü sil - nasıl uygulanır?
- 28. İşaretçiyi arkada nasıl yazılır?
- 29. Akışta nesne yayılma operatörü
- 30. Aspectj bir yöntemin üzerine yazılır
. Ya da belki de. –
Eğer öyle diyorsan. Bir soruya cevap verdikten sonra 24 saatten fazla bir soru sorduğumda, göreceli liyakati ne olursa olsun, kararsızlık içinde kararsız kalıyor (ve cevabın sadece cevabını cevapladığımda cevabımın değeri hakkında bir fikrim var.) – extempore
teşekkürler istisnaları içeren bir çözüm görmek için bir korku. Uygulamanızı birkaç derecelik büyüklükte yavaşlatmak istemediğiniz sürece. – smartnut007