ScalaのStringはjava.lang.Stringのメソッド以外も使える

  • 0
    Like
  • 0
    Comment

    Geek Women Japan 2016 Advent Calendar24日目の代打記事です。最近Scalaやっててハマったところをまとめました。

    この記事について

    ScalaのStringはjava.lang.String以外のメソッドも使えるので紹介。日本語の情報がほとんどなかったのでまとめます。(RubyのreverseがScalaにないか調べたのがきっかけ)

    ScalaにおけるString

    Googleで"Scala String"と検索するとHishidamaさんのサイトが1位にヒットします。そこに最初に書かれているのは以下です。

    Scalaでは、文字列をjava.lang.Stringで扱う。すなわちJavaの文字列そのものであり、不変オブジェクトとなる。

    これしか読まないと「ScalaのStringとJavaのStringは同じ」に見えちゃいます。(※続きがあるのにここで読むの終えてしまった自分が悪い)

    ScalaのStringで使えるメソッド

    Scalaで使えるメソッドは以下のクラスのメソッドが使えます。

    実行結果

    scala> var hoge="scala"
    hoge: String = scala
    
    scala> hoge.reverse
    res0: String = alacs
    
    scala> hoge.length
    res1: Int = 5
    

    なぜStringと書いただけで2つのクラスのメソッドが使えるか

    Predefで自動的(暗黙)に変換する関数としてStringOpsが定義されているため。

    参考リンク

    This post is the No.24 article of GeekWomenJapan Advent Calendar 2016