タグ

ブックマーク / modegramming.blogspot.com (1)

  • 型安全イコール判定 - ScalazとScalactic

    Scalaプログラミングのはまりポイントとして頻出頻度が高く影響も甚大なのは、==メソッドとcontainsメソッドの型チェックだと思います。 この2つのメソッドは(多分Javaとの互換性の問題で)、引数に定義されている型がAnyであるため事実上型チェックが効かない仕様になっています。 具体的には以下のような処理がコンパイルエラーにならず通ってしまうという問題です。 scala> "1" == 1 "1" == 1 res112: Boolean = false scala> List(1, 2, 3).contains("1") List(1, 2, 3).contains("1") res113: Boolean = falseいずれの場合も、常に判定結果はfalseになり、意図した処理でないことは明らかですがScalaコンパイラはエラーとして弾いてくれません。 Scalaは型チェック

    utwang
    utwang 2016/04/30
    たしかにcompileエラーになってほしい。Optionになったことでずっとfalseになるとか気づけないわ。
  • 1