問題タブ [named-constructor]
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.
c++ - 名前付きコンストラクタイディオムと継承
名前付きコンストラクターがいくつかあるクラスがいくつかあります。それらから継承する場合、コンストラクターをどのように継承する必要がありますか?問題は、子クラスではなく基本クラスのオブジェクトを返すことです。
副次的な質問:ボイラープレートコードの量を減らすためにC ++ 0xを「使用」して使用できますか?
c++ - istream を引数とする名前付きコンストラクタの問題
初期化の値を読み取ることができるストリームとしての入力を使用して、クラス Matrix の名前付きコンストラクターを作成しようとしています。
メソッドは多かれ少なかれこのように実装する必要があります
しかし、コンパイル中にメソッドの宣言でエラーが発生します (74 行目でプロトタイプが定義され、107 行目で実装が開始されます)。
ただし、これらのエラーは、int などの単純なパラメーターを使用して名前付きコンストラクターを定義および実装する場合には発生しません。
私は何が欠けていますか?どんな助けでも大歓迎です。
scala - Scalaの名前付きコンストラクタ?
Scala に名前付きコンストラクターはありますか?
c++ - 呼び出しのあいまいさを解決するためにクラスのコンストラクターにダミーパラメーターを追加すると、規則に違反しますか?
次のクラスと 2 つのオブジェクト定義を取ります。
前の 2 つのコンストラクターには、これらのダミー パラメーターが存在しない場合に発生する呼び出しのあいまいさを解決するためのダミーの列挙型パラメーターがあります。ここで名前付きコンストラクターを使用する可能性があるにもかかわらず、これらのダミーパラメーターを使用することを主張する場合、これは私が知っておくべきコーディング規則に違反しますか?
c++ - テンプレート、インターフェース(多重継承)および静的関数(名前付きコンストラクター)
設定
私は可能な限り物事を分解しようとしているグラフライブラリを持っています、そして私が見つけたそれを説明する最もきれいな方法は次のとおりです:node
エッジのリストだけを実装するバニラタイプがあります:
次に、次のように、このミックス全体にインターフェイスを追加できるようにしたいと思います。
等々。次に、実際のグラフクラスが入力されます。これは、実際のタイプのノードにテンプレート化されています。
ひねりは、デカルト格子のようないくつかの特別なグラフを構築するコンストラクターに名前を付けていることです。この場合、によって実装されているインターフェイスに応じて、グラフにいくつかの追加情報を追加できるようにしたいと思いますnode_T
。
これを達成するための最良の方法は何でしょうか?
考えられる解決策
私は次の謙虚な解決策を考えましたdynamic_cast<>
:
これはnode_T
、次のように動作します。
質問
これは-哲学的に-正しい道ですか?私は人々が多重継承をうまく見ないことを知っていますが、これらのような「インターフェース」を使えばそれはすべてうまくいくはずです。
残念ながら、これには問題があります。少なくとも私が知っていることからdynamic_cast<>
、実行時のオーバーヘッドはかなりの量になります。したがって、以前に解決した問題に遭遇します。実際のnode_T
クラスに重みがあるかどうかに関係なく、重みを必要とするグラフアルゴリズムを作成することです。この「インターフェース」アプローチの解決策は、関数を作成することです。
しかし、それに関する問題は、実行時情報(dynamic_cast
)を使用して機能することです。それでも、原則として、コンパイル時に決定して、コードをより効率的にしたいと思います。
両方の問題を解決する別の解決策、特に私が持っているものよりもクリーンで優れた解決策がある場合は、それについて聞いてみたいです!
c++ - 名前付きコンストラクターと一時的な有効期間の延長
デフォルトを使用して値を初期化し、そのベースをいくつかの特殊なコンストラクターに拡張する「ベース」コンストラクターを定義する方法を探しています。
私が欲しいものの擬似コードは次のようになります。
最初は、一時的なの有効期間を延長するf
ことを考えましたが、const宣言により、そのメンバーを編集できません。だから、これは出ているようです。
次に、 「名前付きコンストラクター」アプローチ(上に表示)を試しました。ただし、最初にオブジェクトを作成するために例を変更し、次にそれを変更してから返す必要がありました。f
これは機能しているように見えますが、これは一時的なものであり、関数の最後で範囲外になるため、これは単なる偶然であると合理的に確信しています。
sのようなものを使用することも検討しましauto_ptr
たが、Fooオブジェクトとs to Fooの両方を使用しているauto_ptr
ため、残りのコードは、オブジェクトがベースコンストラクターを介して作成されているかどうかを「気にします」(この場合)。オブジェクト)または拡張コンストラクターの1つを介して(この場合はポインターになります)。
それが役立つ場合は、Pythonで次のようなものを使用します。
最後に、私がこのようにしたい理由は2つあります。
- コードの再利用。共通の初期化を各コンストラクターから1つに移動したいと思います。これは、各コンストラクターによって呼び出される-typeプライベートメソッドを介して実行できることに気付き
init()
ましたが、これについて言及したかっただけです。 - 明確性とあいまいさの解決。名前付きコンストラクターの例の動機と同様に、パラメータータイプだけでは、どのctorを使用するかを決定するのに十分ではありません。さらに、
fromSomething
構文は優れた明快さを提供します。
簡単な解決策があれば許してください。私の仕事は過去数年間でc++からJava/Pythonに移行しているので、少し錆びています。
python - Factory Methods で何を返すか?
Node
複数のコンストラクターを持たせたいクラスがあります。
私はファクトリーメソッドについてオンラインで読んでいましたが、どうやらそれはコンストラクターを実装する最もクリーンなPythonicの方法です。これまでのところ、私のクラスは次のようになります。
ここに何を返せばいいの?私がオンラインで見たすべての例には、課題が 1 つしかなく、まさにその課題が返されました。私には3つの課題があります。ここで何を返すのが適切ですか?
python - python-名前付き列(およびデータ型)を使用して空の配列を初期化します
私には3つの制約があり、いつものように、それらのうちの2つを同時に満たす方法しかわかりません。
- 多次元配列
- 名前付き列
- 異なる列には異なるデータ型が含まれます(したがって、列1のすべてが文字列ですが、列2はすべて10進数などです)
現在、numpy ndarraysを使用して、各列にさまざまなタイプのデータを格納しています。複数のデータ型を格納できるように配列を初期化しました。
私は列名のプロキシとしてヘッダー(文字列名のリスト)を使用してきました(そしてヘッダーの値のインデックスを検索しました)が、これは本当に不器用なようです。
私は周りを見回しましたが、私が知る限り、列名(およびタイプ)で配列を初期化するときは、次のように、配列に値を入力する必要があります:NumPyの行と列のヘッダーを格納する
私がこのようなことをしようとすると:
このエラーが発生します:
php - 名前付きコンストラクターでのファイルの作成
名前付きコンストラクターを介してファイルを作成するクラスがありますが、phpspec を使用してテストすると、ファイルが作成されません。
その理由が見つからないので、コードをもう一度見てみると役立つと思います。
ここに私のファイルクラスがあります:
ここに私の仕様: