ScalaにおけるJavaのインターフェースって?

タイトル難しいな・・・ 抜けてたら勝手に編集してください
11
t_yano @t_yano

まあ私は型がないとプログラム設計できない体質なんで…

2011-10-24 02:15:04
t_yano @t_yano

その辺インタフェースは結構好きで、プログラム書く前にインタフェースだけ書いたりするしな…

2011-10-24 02:16:28
がくぞ @gakuzzzz

でも実感として Java よりも Scala でコード書くときの方が 型について深く考えてる気がする。この感覚はなんだろう

2011-10-24 02:16:52
くっくっkura 🇯🇵🦀 @PG_kura

@t_yano まさにその通りだと思います。あとそれにカリー化と implicit parameter とパターンマッチが加勢して、Java が継承を使ってカバーしている部分の大半を Scala では継承抜きでやっている感じがします。

2011-10-24 02:20:22
Kenji Yoshida @xuwei_k

Listに関しては、2.7系まではListがscalaパッケージの直下にあって、Scalaのライブラリ中でもListが直接使われてて、今と違ってListの内部に実装が直接たくさん書いてあって・・・という事情はあったけど

2011-10-24 02:20:41
Kenji Yoshida @xuwei_k

現在標準ライブラリのコレクションに scala.collection.interfaces っていうパッケージがあって、インターフェースっぽいものはあるんだけれどあまり使われてないな・・・なんのためにあるんだろう? http://t.co/gBB6yo4J

2011-10-24 02:25:16
Yasushi Abe @yasushia

http://t.co/7pQ52GGb scalaだと具象型でもviewで拡張できるしview boundとかその他もろもろの機能でそれほど醜くなくいけるし、viewでアレになってきた時点でtraitに切りだす、とかそういう開発なんじゃないかなぁ、という感じ。

2011-10-24 11:11:32
Yasushi Abe @yasushia

よく考えてみれば、たとえインターフェースきっちりしててもviewがうまく使えないライブラリはちょっと困るかもしれない。Sageをforkしたのはそのせいだったような気もする。

2011-10-24 11:18:38
kmizu @kmizu

http://t.co/JoQqSOQ0 うーむ。色々考えさせられる話ではある。自分は、「純粋なインタフェースとしての」traitはほとんど作らないけど、「実装を部分的に含んだtrait」はよく作ってる気がする。 #scalajp

2011-10-24 23:22:06
kmizu @kmizu

http://t.co/JoQqSOQ0 について続き。 @PG_kura さんや @yasushia さんが述べている通りの部分もあると思う。つまり、Scalaの場合、「後付けで」型の整合性を取る機能が豊富にあるので、そこまで強くインタフェースを意識しない説。 #scalajp

2011-10-24 23:23:35
kmizu @kmizu

Javaの場合、後になって後悔してもどうにもならん、ので、必然的にinterfaceを意識するけど、Scalaだとまあどうにかなるので、そこまで強くinterfaceを意識しなくても良いのでは、という話。 #scalajp

2011-10-24 23:24:52
kmizu @kmizu

ところで、implicit parameter(≒型クラス)使うときは、ほぼ必然的にtrait使うことになるので(抽象クラスだと不便なケースがある)、そういう意味では最近のScalaプロジェクトはtrait多用してる、ような気がする。 #scalajp

2011-10-24 23:26:53
ると @cocoa_ruto

Scalaにインターフェース的なtraitは必要かどうかという話 http://t.co/uEpC6bNb 今やってるプログラムはCakeパターンでDI的なことやってるし、Decoratorパターンを使ってるので実装の無いtraitをどんどん作ってる。

2011-10-24 23:28:48
Yasushi Abe @yasushia

静的強型付け言語であるはずのScalaのほうがある意味型にルーズなコードの書き方してると気づかされたかも。もちろん実際には違うんだけど

2011-10-24 23:33:41