by shigemk2

当面は技術的なことしか書かない

Scalaにおける#(シャープ)

ググラビリティ低すぎる話題が、ScalaやHaskellには多い。

この場合は、"scala sharp"でググると、知りたいことが得られたりはする。

stackoverflow.com

要点としては以下。

中に別のクラスが定義されているクラスにおいて、内部クラスが型となっている引数のメソッドを呼び出す場合、A.Bみたいな書き方はできなくて、a1.Bもしくはa2.Bみたいな書き方しか出来ない。a1.B≠a2.Bであるが、それはたとえばPHPでいうところの==と===のレベルではなく、そもそも「型が違う」と怒られる。なので、a1のf関数の引数はa1のBであって、別のインスタンスのBではない。

これを回避するために、Scalaでは#が用意されている。#を使うと、a1インスタンスのf関数の引数にa1とは違うインスタンスを引数とすることが出来る。

gist.github.com

なお、#については、ここにも書いてあったりはする。 Jim McBeath: Scala Syntax Primer

でも、#が使えると何が嬉しいのかは知らない。。。

荒野ニオケルbloodthirsty butchers

荒野ニオケルbloodthirsty butchers