

nullを返す可能性がある関数をOptionで受け取る場合、例えば

[code]

    val fuge=Option(nullablefunc())
    def twice(one:Option[Int])={
        one.map(2*)
    }
    val result=twice(fuge.asInstanceOf[Option[Int]])
    
[/code]

Option(null)の場合、型がOption[Null]=NoneになるのでOption[Int]にするためキャストしてますけど

[code]

    fuge.asInstanceOf[Option[Int]]
    
[/code]

Optionがnullを受け取る可能性がある場合、上記の方法以外にnullを受け取れる方法があるんでしょうか。？


CC BY-SA 3.0
2014-12-18T03:31:11.513
1969
2014-12-18T10:42:11.357
2014-12-18T08:36:27.580
30
4883
question
scala
nullを返す可能性のあるJava関数の返り値をOptionでラップする方法


`Option[Int]`型として、`null`あるいは`Int`を返すjavaの関数`nullablefunc()`の返り値を使いたいということでしたら、

[code]

    val fuge:Option[Int]=Option(nullablefunc())
    
[/code]

のようにシグネチャを付ければ解決すると思います。


CC BY-SA 3.0
2014-12-18T06:15:21.283
1997
2014-12-18T06:15:21.283
2781
1969
answer


scala では Integer => Int 時にnullだとNullPointerExceptionを出すみたいです。

[code]

    scala> val x:java.lang.Integer = null
    x: Integer = null
    
    scala> val y:Int = x
    java.lang.NullPointerException
      at scala.Predef$.Integer2int(Predef.scala:357)
      ... 43 elided
    
[/code]

なので上記のコードは

[code]

    val fuge = Option[Integer](nullablefunc()).map(Integer2int)
    def twice(one:Option[Int])={
        one.map(2*)
    }
    val result=twice(fuge)
    
[/code]

のようにしないと NullPointerException が出てしまいますね


CC BY-SA 3.0
2014-12-18T10:42:11.357
2031
2014-12-18T10:42:11.357
3466
1969
answer