問題タブ [traits]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
4 に答える
1878 参照

c++ - C++テンプレートのメソッド型からクラス型を推測する方法は?

以下に示すテンプレートでは、(コンパイル呼び出しRun(&Base::foo)で行われるように) Base タイプに 2 回名前を付ける必要なく、呼び出しが成功することを望みます。Run<Base>(&Base::foo)それもらっていいですか?おそらく、大量のBoostヘッダーを追加せずに?

提供されたコードでは、次のエラーが発生します。

( http://ideone.com/8NZkqでスニペットをいじることができます):

0 投票する
2 に答える
1928 参照

scala - Scalaの特性/ケーキパターンとケースクラス

私のWebアプリケーションでは、許可されたユーザーには少なくとも4つの「ファセット」があります。httpセッション関連データ、永続データ、Facebookデータ、ランタイムビジネスデータです。

少なくとも2つの理由から、トレイトではなくケースクラスの構成を使用することにしました。

  • 特性の混合は名前の衝突を引き起こす可能性があります
  • パターンマッチングやコピーメソッドなどのフリーケースクラスのグッズが欲しい

このテーマに関する経験豊富なスカラリストの意見を知りたいです。特性やケーキのパターンはそのようなタスクに適しているように見えますが、前述のように問題があります...迅速かつ簡単に実装するだけでなく、使用するために深く理解したいことは明らかです将来は。

それで、私の決定には欠陥や誤解がありますか、それとも正しいですか?関連するコードは次のようになります。

0 投票する
5 に答える
25504 参照

scala - 特性をインスタンスにミックスインする方法は?

与えられた特性MyTrait

extendsまたはwith:を使用してクラスに混在させることができます。

また、新しいインスタンスをインスタンス化するときに混合することもできます。

しかし...その特性(またはそれが違いを生む場合は他の特性)を既存のインスタンスに追加できますか?

JavaでJPAを使用してオブジェクトをロードしていますが、トレイトを使用してオブジェクトにいくつかの機能を追加したいと思います。それは可能ですか?

私は次のように特性を混ぜることができるようにしたいと思います:

0 投票する
1 に答える
583 参照

python - 特性のみを使用したPythonのリアルタイムGUI

Pythonの特性を使用してUIを作成し、セルオートマトンシミュレーション用のインターフェイスを作成することは可能ですか?

0 投票する
1 に答える
286 参照

c++ - 特性を持つテンプレート化されたクラスの指定

私はstruct特性を示すを持っています:

そして、私はそれをクラスで専門化することができます、したがって:

ただし、現在FooTraits、専門にしたいクラスもテンプレート化されている場合は使用できません。したがって、次のようになります。

この最後のコードブロックをどのように表現すればよいのFruit< T >でしょs_implementsFoo = trueうか。

現在、次のエラーが報告されています。

0 投票する
1 に答える
513 参照

perl - Moose/MooseX::Declare for Perl を使用して (Array トレイトから) 委任されたメソッドに渡されるパラメータを自動的に強制することは可能ですか?

Net::IP オブジェクトとして IP アドレスのリストを含むクラスを作成しています。

Net::IP オブジェクトをサブタイプ (IPAddress) としてラップし、文字列から IPAddress への強制を定義しました。次に、タイプ ArrayRef[IPAddress] の ip_list というクラスに属性を追加し、 Arrayトレイトのpushメソッドに委譲しました。

ただし、委任されたメソッドを次のように呼び出そうとすると:

「Value SCALAR(0x8017e8) was not pass container type constraint 'IPAddress' at ...」というエラーが表示されます。

したがって、明らかに add_ip へのパラメーターは強制されていません。

私が試みていることを行うことは可能ですか、それともすべて手動で行う必要がありますか? 私は Moose のマニュアルを調べましたが、いずれかの方法を示すものは何も見当たりませんでしたが、おそらく何かが欠けています。

0 投票する
2 に答える
29753 参照

c++ - トレイトクラスはどのように機能し、何をしますか?

ScottMeyersのEffectiveC++を読んでいます。彼はトレイトクラスについて話していて、コンパイル時にオブジェクトのタイプを決定するためにそれらが必要であることを理解しましたが、これらのクラスが実際に何をするかについての彼の説明を理解できませんか?(技術的な観点から)

0 投票する
6 に答える
387 参照

scala - 特性と with-keyword を使用したコード削減

同じスーパータイプのクラスがいくつかあります。したがって、このクラスはすべて同じメソッドをオーバーライドする必要があります。これで、メソッドを呼び出して、共通のスーパータイプのオブジェクトとしてコミットできます。ただし、コミットされた各タイプに反応することが常に役立つとは限らないため、例外がスローされます。最初に、この動作を次のように解決しようとしました:

サブタイプが多いため、(各メソッドおよび各クラスで) 多くのコードが必要になるため、この問題を で解決しようとしましたtraits。各特性は 1 つの型のみをテストし、オブジェクトをスタックの上位のメソッドに転送する必要があります。以下のコードは、私がそれをどのように想像するかを説明しています。ただし、コンパイラは型を分解できないため、これは機能しません。もう 1 つの問題は、各動作クラスでクラスの各属性を宣言する必要があることです。

特性を使用してコード行を減らすことができるかどうか誰か教えてもらえますか? または、現在使用しているすべてのソリューションが最適ですか?

編集:

あなたの助けを借りて、半分有効な解決策を見つけました。私の主な問題は、Scala 機能を使用してコード行を削減しようとしたことです。そのため、最も簡単な方法を見落としていました。それは、コードをアウトソーシングすることです! オブジェクトの組み合わせをチェックする新しいオブジェクトを作成するだけです。オブジェクト自体は、独自の型のみを処理します。

これはコードです:

コードを少し拡張して、 object を挿入しましたNumHolder。ここで、小さな欠陥が 1 つだけあります。NumHolder では、追加メソッドでコンパイル エラーが発生しない限り、スーパータイプをコミットできません。type-keyword の代わりに Generics を使用しようとしましたが、常に型を Num に設定する必要があるため (オブジェクト操作でも)、これは不便です。

この小さなコンパイル エラーを解決するにはどうすればよいですか?

0 投票する
1 に答える
333 参照

c++ - clone_ptrの問題、新規ではなくライブラリの関数を使用してコピーオブジェクトを作成する必要があります

私はC++のテンプレートに少し慣れていないので、この質問が混乱したり愚かだったりする場合はご容赦ください。クローンスマートポインターを実装したいという問題があるだけなので、クラスごとにコピーコンストラクターを作成する必要はありません。スマートポインターではなくオブジェクトポインターのみを使用しているように見える、基になるXMLライブラリを使用します。問題は、私の特性が基礎となるライブラリの関数を使用して新しいオブジェクトを作成する必要があり、テンプレート/特性クラスでそれをどのように行うかわからないことです。以下にいくつかのコメントを付けてすべてのコードを投稿しました。誰かアドバイスがあれば、よろしくお願いします。

不明な点がございましたら、お問い合わせください。明確にさせていただきます。

0 投票する
1 に答える
401 参照

perl - Moose を使用して、実行時に「ro」属性特性の値を設定するにはどうすればよいですか?

他のクラス属性に基づいて設定したい属性特性があります。$self属性のメタではなく、クラスのコピーを取得する属性特性のデフォルトが本当に必要です。クラスで次のようなことをしたい:

でも、自分の属性特性ROを維持したいのですが?これは可能ですか?MOP でクラス属性の値を設定できることは知っていますが、メタ属性に属性を設定する方法がわかりません。