2020-10-22

anond:20201022213743

さぁ?オレはScala嫌いだから知らんよ。

まぁ、でも多分こんな目的では?という予想はあるよ。

・もともとは C++ は多重継承ができて、カオスになった。

Java単一継承となり、振る舞いの規約として Interface が生まれ、具象化が不要な始祖クラスとして抽象クラス発明された。おかげで、言語官僚化した。

RubyScala では、Interface に振る舞いが記載できるようになって、Mix-In という方法で振る舞いを継承できるようにした。その継承に優劣をつけれるようにすることで、C++Java の出来なかったことを解消しようとした。

・今のところ、単一継承を行うクラスベース継承を行う言語でこれ以上の解答を用意できた言語はない。今のはやりは Rust のような後付の継承を良しとするプロトタイプベース継承時代のはやりである

こんな感じなんじゃねーの?Ruby が好きだからRuby 史観で書いたけど。つまりトレイトって「振る舞い」が記載できる Interface のことだと思うよ。

記事への反応 -
  • 完全に正しい多段継承でテンプレートパターン使いすぎて使い勝手最悪のライブラリを見たことがあるのでリスコフが全てだとは思わないかな。 継承より委譲には賛成。 > Aをラップし...

    • なんかわかっている人がきた感じ。 イテレータパターンとオブサーバーパターンは言語に組み込まれた感じがする。Ruby とか見てると。

      • いつの話ししてるんだよお前

        • うーん、2005年ぐらいか? Scala とか出てきたけど、デザインパターンが言語レベルで組み込まれたのは、これぐらいじゃない?Java や Javascript も機能に組み込んだけど。

          • ScalaのTraitは何のためにあるのか教えてくれ

            • さぁ?オレはScala嫌いだから知らんよ。 まぁ、でも多分こんな目的では?という予想はあるよ。 ・もともとは C++ は多重継承ができて、カオスになった。 ・Java が単一継承となり、振...

            • scalaなら関数型ライブラリのcatsにおける型クラス定義がtraitとその多重継承の利用例として良いと思う

記事への反応(ブックマークコメント)

ログイン ユーザー登録
ようこそ ゲスト さん