タグ付けされた質問 「traits」

コンピュータプログラミングでは、特性はメソッドのコレクションであり、「オブジェクト指向プログラムを構造化するための単純な概念モデル」として使用されます。

2
戻り値の型が明示的に指定されていない場合、Unitを返すメソッドをStringを返すメソッドでオーバーライドできるのはなぜですか?
私はScala Edition1のプログラミングにおける特性の章のコード例を通して作業していました https://www.artima.com/pins1ed/traits.html そして私のタイプミスのために奇妙な行動に出くわしました。以下の特性のオーバーライドメソッドでは、コードスニペットではコンパイルエラーは発生しませんが、オーバーライドされたメソッドの戻り値の型はUnitvs とは異なりStringます。しかし、オブジェクトのメソッドを呼び出すと、Unitが返されますが、何も出力されません。 trait Philosophical { def philosophize = println("I consume memory, therefore I am!") } class Frog extends Philosophical { override def toString = "green" override def philosophize = "It aint easy to be " + toString + "!" } val frog = new Frog //frog: Frog …

1
特性で使用する値を動的に生成するにはどうすればよいですか?
私が書いているライブラリの場合、そのHOWの属性をhandles使用して、そのHOWのインスタンスに、別のHOWが実行するさまざまな役割のメソッドを委任します。私の最初の試みはこのように見えました(これを読みやすくするために、これはのみを扱いますMetamodel::Naming): class ParentHOW does Metamodel::Naming { method new_type(ParentHOW:_: Str:D :$name!, Str:D :$repr = 'P6opaque' --> Mu) { my ::?CLASS:D $meta := self.new; my Mu $type := Metamodel::Primitives.create_type: $meta, $repr; $meta.set_name: $type, $name; $type } } class ChildHOW { has Mu $!parent; has Mu $!parent_meta handles <set_name shortname set_shortname>; submethod BUILD(ChildHOW:D: …
8 oop  traits  raku 
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.