問題タブ [class-method]

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 投票する
3 に答える
3903 参照

ruby - (Ruby で) 混合クラス メソッドがクラス定数にアクセスできるようにする

定数が定義されたクラスがあります。次に、そのクラス定数にアクセスするクラス メソッドを定義します。これはうまくいきます。例:

次のように、このクラスメソッドを外部モジュールに移動しようとすると、私の問題が発生します。

Ruby はメソッドを、クラスではなくモジュールから定数を要求していると解釈します。

では、メソッドがクラス定数にアクセスできるようにするための魔法のトリックは何ですか? どうもありがとう。

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

c# - C#用のPythonスタイルのクラスメソッド?

classmethodC#でPythonで何をするかを行う方法はありますか?

つまり、使用元のサブクラスに応じて、Typeオブジェクトを(暗黙の)パラメーターとして取得する静的関数です。

私が欲しいものの例は、おおよそです

期待される出力は

(ここのコードパッドの同じコード。)

0 投票する
8 に答える
6953 参照

ruby - インスタンス メソッドをクラス メソッドに委譲する

Ruby で、FooFoo の大規模なコレクションをカタログ化できるクラスがあるとします。すべての Foo が緑色で球状であるというのは基本的な自然の法則であるため、次のようにクラス メソッドを定義しました。

これは私がすることができます

だがしかし

my_fooそれは明白に緑色であるという事実にもかかわらず。

明らかに、 をcolour呼び出すインスタンス メソッドを定義できますself.class.colourが、そのような基本的な特性が多数あると扱いにくくなります。

欠落しているメソッドのクラスを試すように定義することでおそらくそれを行うこともできますがmethod_missing、これが私がやるべきことなのか醜いハックなのか、それとも安全に行う方法なのかはわかりません (特に私は実際に ActiveRecord の下にいるため) Rails では、method_missing を使っていくつかの Clever Fun Stuff を実行していることを理解しています)。

あなたは何をお勧めします?

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

java - Javaから継承されたクラスメソッドを呼び出す

Pythonでは、クラスメソッドを継承できます。例えば

Javaで同等のことをどのように行いますか?私は現在持っています:

B.main()を呼び出して「B」を出力したいのですが、「new A()」がハードコーディングされているため、代わりに「A」が出力されることは明らかです。

「newA()」をどのように変更して、ハードコードされたクラスAではなく、呼び出されたときにそのクラスを使用するようにパラメーター化されますか?

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

python - Pythonでクラスプロパティを作成する方法はありますか?

以下は、何らかの理由で機能しません。

これを行う方法はありますか、それともある種のメタクラスのトリックに頼る唯一の選択肢ですか?

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

iphone - タップしたときに UIButton にクラス メソッドを実行させるにはどうすればよいですか?

のようなイベントの後に、 UIButton に+doSomething:(id)senderクラスメソッドを実行させるにはどうすればよいですか? インスタンスメソッドと同じように使用できますか?MyClassUIControlEventTouchDown-addTarget:action:forControlEvents:

前もって感謝します。

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

python - クラス属性としての関数の割り当ては、どのようにしてPythonのメソッドになりますか?

この割り当てはどのようにメソッドを作成しますか? 割り当てがクラスに対して次のことを行うのは直感的ではないようです。

  • 関数をバインドされていないインスタンス メソッドに変換する
  • ラップされた関数classmethod()をクラス メソッドに変換します (実際、これは非常に直感的です)。
  • ラップさstaticmethod()れた関数を関数に変換する

最初のものには が必要でinstancemethod()、最後のものにはラッパー関数がまったくないはずです。これらがブロック内で使用されることは理解していますclassが、なぜブロック外に適用する必要があるのでしょうか?

しかし、もっと重要なことは、クラスへの関数の割り当てはどのように機能するのでしょうか? これら3つのことを解決する魔法は何ですか?

これでさらに混乱します:

しかし、属性を取得するとき、これは記述子と関係があると思います。ここでの属性の設定とはあまり関係がないと思います。

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

ruby - Ruby メタクラスの狂気

私は立ち往生しています。クラス メソッドを動的に定義しようとしていますが、Ruby メタクラス モデルについて頭を悩ませることができません。次のクラスを検討してください。

明らかに、両方のメソッドが Class のインスタンスを返します。しかし、これら 2 つのインスタンスは同じではありません。また、祖先も異なります。

メタクラスとクラス インスタンスを区別する意味は何ですか?

メソッドを動的に定義するためにメタクラスにできることがわかりましたsend :define_methodが、それをクラスインスタンスに送信しようとすると機能しません。少なくとも私は自分の問題を解決できましたが、なぜこのように機能しているのかを理解したいと思っています。

2010 年 3 月 15 日 13:40 更新

次の仮定は正しいですか。

  • self.instance_eval を呼び出してメソッドを定義するインスタンス メソッドがある場合、そのクラスの特定のインスタンスにのみ影響します。
  • self.class.instance_eval (class_eval の呼び出しと同じ) を呼び出すインスタンス メソッドがあり、メソッドを定義すると、その特定のクラスのすべてのインスタンスに影響し、新しいインスタンス メソッドが生成されます。
  • instance_eval を呼び出してメソッドを定義するクラス メソッドがある場合、すべてのインスタンスに対して新しいインスタンス メソッドが作成されます。
  • meta/eigen クラスで instance_eval を呼び出してメソッドを定義するクラス メソッドがある場合、クラス メソッドになります。

私はそれが私にとって意味を持ち始めていると思います。クラスメソッド内の self が固有クラスを指す場合、可能性は確かに制限されます。その場合、クラス メソッド内からインスタンス メソッドを定義することはできません。あれは正しいですか?

0 投票する
9 に答える
213565 参照

ruby - Ruby: インスタンスからクラス メソッドを呼び出す

Ruby では、そのクラスのインスタンスの 1 つからクラス メソッドをどのように呼び出すのでしょうか? 私が持っていると言う

Truck.default_makeはデフォルトを取得します。しかし、言及せずにこれを言う方法はありTruckますか? あるべきだと思われます。

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

objective-c - ObjectiveCでクラスメソッドを使用する場合の欠点

次のようなクラスメソッドを使用することで、メモリ/パフォーマンスの欠点があるのか​​、それとも一般的な欠点があるのか​​疑問に思いました。

また

特にメモリ管理(iPhone)を扱う必要がある環境では、クラスメソッドに多くの機能を配置すると便利ですが、通常、何か便利な場合に問題がありますか?

例としては、非常に単純な機能を備えた多数のクラスで構成された考え抜かれたWebサービスがあります。すなわち

これらを大量にWebサービスクラスに収集し、Webサービスクラスをインスタンス化して、このクラスのメソッドに「結果」クラスのクラスメソッドを呼び出させます。クラスは単純ですが、大量のXmlを処理し、多くのオブジェクトをインスタンス化します。

クラスメソッドが存在するのか、それともスタックやメモリ内でインスタンス化されたオブジェクトへのメッセージとは異なる方法で処理されるのかを尋ねていると思いますか?

それとも、それらは単にインスタンス化され、舞台裏で再びプルダウンされるので、数行のコードを節約する方法にすぎませんか?