私はスカラ座でのC#構文を再現しようとしている:暗黙の変換
C#コード:
val myValue = myObject ?? new MyClass();
それがnullでない場合は基本的に 'myValue' 意志 'はmyObjectという' が含まれている、またはnullの場合は 'MyClass'の新しいインスタンスです。
これは私が実行しようとしたScalaのコードです:
case class ShortCond(original: Any){
def ??(fallback : Any) {
if (original == null)
return fallback
return original
}
}
implicit def any2ShortCond(original: Any) = ShortCond(original)
val myString = null
val value = myString ?? "myString is null"
MYSTRINGたときにそれが機能するには、nullではありませんが、のmyStringがnullであるとき、それは返し失敗:
error: value ?? is not a member of Null
val value = myString ?? "myString is null"
私は理解してエラーですが、Scalaでこれを達成する方法があるのでしょうか、それとも不可能ですか?
おかげ
Scalaでは、あなたのコードに 'null'を全く使わないよう勧めています。それはあなたが努力すべきことです。 –
これはScalaコードでnullを使うのは悪いことですが、ライブラリメソッド呼び出しでnull値を返すことができます。 – reevolt
あなたはそうです。実際に行うべきことは、できるだけ最下位の第三者のライブラリからの 'null'値を処理し、' Option [T] 'や他のヌル回避値を伝播することです。 –