ハードウェアの気になるあれこれスマートフォン用の表示で見るハードウェアの気になるあれこれ技術的に興味のあることを調べて書いてくブログ。トレイト(1)Scalaスポンサーリンク今日はトレイトの章を。今までどの言語でも見たことのない用語。特定とか特色"という意味らしい。プログラムの分割(モジュール化)と組み立て(合成)は、オブジェクト指向プログラミングでも関数型プログラミングにおいても重要な設計の概念になります。Scalaのオブジェクト指向プログラミングにおけるモジュール化の中心的な概念になるのがトレイトです。書いてあるので、Scalaにおける重要な機能なのだろう。<メソッド定義>)*}クラスの定義からコンストラクタ部分を除いたものという感じ。以下のようなことが特徴として挙げられるとのこと。複数のトレイトを1つのクラスやトレイトにミックスインできる直接インスタンス化できないクラスパラメータ(コンストラクタの引数)を取ることができないPerlのMooseとかにあるRoleみたいなものっぽい。上記の3点について見ていく。ClassBというふうにクラスを指定した場合を見てみる。}}上記のようにwithにClassBを指定した場合はエラーになる。found複数のクラスを継承する必要のある場合はクラスをトレイトにすることで実現が可能。直接インスタンス化できないそのままなので、試してみる。}}上記のコードを実行すると以下のようにエラーになる。foundクラスパラメータ(コンストラクタの引数)を取ることができないこれもそのままでクラスでは出来たコンストラクタに引数を持たせるということが出来ない。}}上記のコードを実行すると以下のようにエラーになる。found定義で書いたようにトレイト自体はフィールドを持つことが可能だが、コンストラクタ引数が存在しないのでそれを使った値の設定が出来ないことになるが、これも特に問題にはならないらしく以下のように抽象メンバーを持たせることで値を設定可能にすることが出来る。}}上記のように定義したTraitAを継承したクラスを作成しコンストラクタの引数でメンバを上書きするとTraintAのnameに値を設定することが出来る。a2のようにnameを上書きするようにして使用することも可能。{}を使うとTraitを継承した無名のクラスを作ってインスタンスすることが出来る。20180916_05_trait_abstract_member.scalatraitoverrideまだこの章は続くのだけど、今日はここまで。技書博2にChisel本を出してきました月別アーカイブはてなブログをはじめよう!diningyo-kpuku-jougekiさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。