Olası Çoğalt:
How to write a proper null-safe coalescing operator in scala?Scala eşdeğer
C# ??
operatörün Scala eşdeğer nedir?
örnek: Ben bir tane inanmıyorum
string result = value1 ?? value2 ?? value3 ?? String.Empty;
Olası Çoğalt:
How to write a proper null-safe coalescing operator in scala?Scala eşdeğer
C# ??
operatörün Scala eşdeğer nedir?
örnek: Ben bir tane inanmıyorum
string result = value1 ?? value2 ?? value3 ?? String.Empty;
. Boş bir birleştirici işleç için this gönderisini görebilirsiniz.
Aynı semantiklerle kendiniz yazabilirsiniz - soldan sağa değerlendirme nedeniyle aynı türde ısrar eden, ancak biri bunu değiştirebilecek olan: - sağdan sola değerlendirme için gerektiğinde türlerini genişletmek:
class CoalesceNull[A <: AnyRef](a: A) { def ??(b: A) = if (a==null) b else a }
implicit def coalesce_anything[A <: AnyRef](a: A) = new CoalesceNull(a)
scala> (null:String) ?? (null:String) ?? "(default value)"
res0: String = (default value)
Ama bu operatör Option
tür senaryolarda yanı sıra varolmayan değerlerin işleme birçok benzer davalara tercih edilen yoldur olabilir yok nedenini:
en az birinin boş olmadığından emin olarak head
; Option(null)
None
dönüşür ve flatMap
birlikte sadece Some(_)
girdileri toplar çünkü bu işler unutmayın.)
Anlamlarını aynı yapmak için 'def? (B: => A)' olması gerektiğine inanıyorum. Sanırım elvis operatörünün sağ tarafı “a” null değilse değerlendirilmemelidir. Yine de yanlış olabilir. – sinharaj
@sinharaj - Muhtemelen haklısınız. C# 'nin bunu nasıl yaptığını bilmiyorum. –
getOrElse deneyin. Arkadaşım önerdi.
Uygun bir kullanıcı değil ama basit ifadeler için kullanışlı olabilir: 'Seçenek (null: String) .getOrElse (" varsayılan değer ")' veya 'Seçenek (Option (boş değer: String) .getOrElse (null: String)). GetOrElse ("varsayılan değer") – karmakaze
Bağlantılı cevaba bakın, ancak, daha fazla nokta için, boş değerlerden kaçınılır. Seçenek kullan.
This blog post, Scala'da Groovy'un "Elvis işleci ?:
" öğesinin nasıl uygulanacağını kapsar. Bu, C# 'nin ??
operatörüyle aynı şeyi yapar.
http://stackoverflow.com/questions/1364361/how-to-write-a-proper-null-safe-coalescing-operator-in-scala? – Philippe