ClassAにmethod1()があるとします。 mainメソッドでClassAのオブジェクトを作成せずにmethod1()にアクセスしたいPerlでクラスオブジェクトを使用せずにメソッドにアクセスするには?
-4
A
答えて
2
それがクラスメソッドだ場合は、下記のようにそれを呼び出すことができます。
use ClassA;
ClassA->method1();
例:
ClassA.pm
package ClassA;
sub welcome_message{
my $class = shift;
my $name = shift;
print "Hello $name";
}
1;
test.pl
#!/usr/bin/perl
use strict;
use warnings;
use ClassA;
my $name = 'John Doe';
ClassA->welcome_message($name);
perlootutをご覧ください。
2
基本的に2種類の方法があります。最も一般的な型はオブジェクトメソッドです。オブジェクトメソッド(つまり、クラスのインスタンス)に対して呼び出されるメソッドです。大部分の場合、オブジェクトなしでオブジェクトメソッドを呼び出すことは、オブジェクトからデータを読み込むか、オブジェクトにデータを書き戻す必要があるため、完全に無意味になります。
しかし、クラスメソッド - クラスで呼び出されるメソッドもあります。オブジェクトコンストラクタ(通常はnew()
と呼ばれます)はおそらく、よく知られているクラスメソッドの例です。クラスメソッドを呼び出すには、クラス名、矢印演算子、およびメソッドの名前を使用します。
Some::Class->some_method;
また、メソッドにパラメータを渡すこともできます。
Some::Class->some_method($some, $parameters);
これは、すべてのかなり曖昧ですが、あなたがやっていると、あなたがなしとオブジェクトメソッドを呼び出したい理由、それはもはや助けとなることは不可能だかについて、より多くを知らず。
更新:は、私はちょうどこれはこれは、 `$のself`(または` $のclass`)で何かをしたいかもしれませんSO :-)
関連する問題
- 1. データベースにアクセスせずにIQueryableでFirst()メソッドを使用する
- 2. VB.NETで "My"を使用せずに埋め込みリソースにアクセスするには?
- 3. manage.pyシェルを使用せずにモデルオブジェクトにアクセスするDjangoスクリプト
- 4. インスタンス化せずにstoryboardIDを使用してUIViewControllerにアクセスする
- 5. Python:PyQtで既にインスタンス化されたクラスオブジェクトにアクセスするには?
- 6. イテレータを使用してベクトルに格納されたクラスオブジェクトのメソッドにアクセスする。どうやって?
- 7. 静的メソッドを使用せずにクラスシングルトンを作成する
- 8. ソースコードを変更せずにJavaクラスオブジェクトのハッシングを変更する
- 9. MySQLを使用せずにデータベースを作成してアクセスするには?
- 10. 行データを列に変換PIVOTを使用せずにアクセス073
- 11. リストクラスのコンストラクタをインプリメンテーションでメソッドを使用せずにコピー
- 12. REを使用せずにDateTimeを使用するには?
- 13. Mapboxを使用せずにOpenStreetMapを使用するには?
- 14. ionic-nativeを使用せずにプラグインを使用するには?
- 15. QMLを使用せずにQVirtualKeyboardプラグインを使用するには?
- 16. DatePickerDialogを使用せずにOnDateChangedListener、OnDateSetListenerを使用するには?
- 17. evalを使用せずにJavascriptでネストされたJSON要素にアクセスする
- 18. クラスのインスタンスを使用せずにjavascriptクラスのstaticプロパティにアクセス
- 19. ScriptManagerを使用せずにJavascriptからWCF WebServiceにアクセス
- 20. 抽象メソッドを使用せずにサブクラスでメソッドの実装を強制するには?
- 21. 属性を直接使用せずにgetXXX()メソッドを使用する理由
- 22. メソッドの名前を使用せずに、アドレスのクラスの仮想メソッドにアクセスするにはどうすればいいですか?
- 23. MapReduceを使用せずにJavaでHadoopファイルにアクセスできますか?
- 24. Pythonでクラスオブジェクトのメソッドのコードをリロードするには?
- 25. .controller()で$ locationサービスを使用せずに$ locationサービスにアクセスするにはどうすればよいですか?
- 26. SetBinding()メソッドを使用せずにUIElementのプロパティにバインディングを追加する方法
- 27. perlでハッシュテーブルにアクセス
- 28. 一時的な配列を使用せずに最後のPerlハッシュキーにアクセスするにはどうすればよいですか?
- 29. マップのイテレータを使用せずにキー値のペアにアクセスできますか?
- 30. インラインプロットを使用せずにIPythonノートブックにリモートからアクセスできますか?
に私の1000番目の答えだったことに気づきました、のような別のメソッドを呼び出します。 ' - >'構文を使用し、代わりに 'ClassA-> method1'と言う方が良いでしょう。 – simbabque
いくつかの提案。まず、オブジェクトメソッドでは '$ self'だけを使用します。クラスメソッドの場合、私はinvocantを格納する変数の名前として '$ class'を使います。第2に、他のパラメータを処理する前に 'shift 'を使ってinvocantを取得したい(' my $ self = shift')。これには2つの利点があります - まず、最初の引数が何らかの方法で特別であることを示し、2番目に、ユーザーがメソッドに渡した実際の引数を含む '@ _ 'を残します。 YMMV :-) –