型注釈


Type_signature
引用の誤りをチェックして、
 「型署名」  
コンピュータサイエンス、型シグネチャまたはタイプ注釈は、関数、サブルーチン、またはのための入力および出力定義方法。型シグネチャには、関数に含まれる引数の数、型、および順序が含まれます。型シグネチャは通常、オーバーロードの解決中に、多くのオーバーロードされたフォームから呼び出される関数の正しい定義を選択するために使用されます。

コンテンツ
1 例
1.1 C / C ++ 1.2 Erlang 1.3 Haskell 1.4 Java
2 サイン
3 メソッドシグネチャ
3.1 例
3.1.1 C / C ++
3.1.2 NS#
3.1.3 Java
3.1.4 ジュリア
3.1.5 Objective-C
3.1.6 さび
4 も参照してください
5 参考文献

C / C ++
でCおよびC ++、型署名がされている宣言として一般に知られているものによって、関数プロトタイプ。C / C ++では、関数宣言はその使用法を反映しています。たとえば、シグニチャを持つ関数ポインタは次のように呼び出されます。(int)(char, double)
char c ; ダブルd ; int retVal = (* fPtr )(c 、d );

Erlang
でアーラン、型シグネチャは、任意選択として、宣言することができます。-スペック(FUNCTION_NAME (TYPE1 ()、 TYPE2 ()、 …) – > out_type ())。
例えば:-スペック(is_even (番号()) – > ブール値())。}}

Haskell
Haskellの型署名は、通常、次の形式を取ります。
functionNameを :: arg1Type – > arg2Type – > … – > argNType
結果のタイプは、最初に指定された引数を超えるすべてのものと見なすことができることに注意してこれはカリー化の結果であり、これはHaskellの第一級関数のサポートによって可能になります。この関数は2つの入力を必要とし、1つの引数が指定され、関数は「カレー」されて、指定されていない引数の関数を生成します。したがって、、を呼び出すと、を生成するために呼び出すことができる新しい関数が生成されます。f xf :: a -> b -> cf2 :: b -> cf2 bc
実際の型の仕様は、次のような、実際の型で構成することができInteger、あるいは一般的なタイプの変数に使用されるパラメトリック多型 の機能、などa、またはb、又はanyType。したがって、次のように書くことができます。functionName :: a -> a -> … -> a
Haskellは高階関数をサポートしているので、関数を引数として渡すことができます。これは次のように書かれています:functionName :: (a -> a) -> a
この関数は、型シグネチャを持つ関数を取り込んで、型outのデータを返します。a -> aa

Java
で、Java仮想マシン、内部型シグネチャは、仮想マシン・コードのレベルでメソッドおよびクラスを識別するために使用されます。
例:メソッドはバイトコードでとして表されます。String String.substring(int, int)Ljava/lang/String.substring(II)Ljava/lang/String;
mainメソッドのシグネチャは次のようになります。
public static void main (String [] args );
そして、分解されたバイトコードでは、それは次の形式を取ります Lsome/package/Main/main:([Ljava/lang/String;)V
メソッドのメソッドシグネチャには、次のmain()3つの修飾子が含まれています。
publicメソッドを任意のオブジェクトから呼び出すことができることを示します。main()
staticメソッドがクラスメソッドであることを示します。main()
voidことを示している方法は、戻り値はありません。main()

サイン
このセクションの
関数シグネチャは、関数プロトタイプで構成されます。名前、スコープ、パラメーターなどの関数に関する一般的な情報を指定します。多くのプログラミング言語は、コンパイラからリンカにさらに多くのセマンティック情報を渡すために名前マングリングを使用します。マングリングに加えて、関数シグニチャ(ほとんどのコンパイラに内部的に格納されている)には、すぐには利用できないがアクセスできる過剰な情報が
関数シグネチャの概念を理解することは、すべてのコンピュータサイエンス研究にとって重要な概念です。
最新のオブジェクト指向技術は、本質的に関数の署名から作成されたテンプレートであるインターフェースを利用します。
C ++は、さまざまなシグネチャで関数のオーバーロードを使用します。
多重継承の実践では、予測できない結果を回避するために関数シグネチャを考慮する必要が
コンピュータサイエンス理論、特にポリモーフィズムの概念は、関数シグネチャの概念を多く利用しています。
Cプログラミング言語では、署名はそのプロトタイプ定義とほぼ同等です。
「署名」という用語は、コンピュータサイエンスで他の意味を持つ場合が
ファイル署名は、ファイルの内容を識別または検証できます。
データベース署名は、データベースのスキーマまたはバージョンを識別または検証できます。
MLの家族のプログラミング言語、「署名は」の役割を果たしモジュールシステムの構造を参照するキーワードとして使用されているインタフェースを。

メソッドシグネチャ
参照:
関数プロトタイプ
コンピュータプログラミング、特にオブジェクト指向プログラミング、方法は一般に、その一意で識別されるメソッドシグネチャ通常メソッド名を含み、及び数、種類及びその順序パラメータ。メソッドシグネチャは、メソッドの最小タイプです。

C / C ++
C / C ++では、メソッドシグネチャはメソッド名とそのパラメーターの数とタイプですが、値の配列で構成される最後のパラメーターを持つことができます。
int printf (const char * 、… );
これらのパラメータの操作は、標準ライブラリヘッダーのルーチンを使用して実行できます。

NS#
Cの構文と同様に、C#のメソッドシグネチャは、名前とそのパラメーターの数と型で構成されます。最後のパラメーターは値の配列である可能性が
void Add (out int sum 、 params int [] value ); 追加(アウト 和、 3 、 5 、 7 、 11 、 – 1 )。 //合計== 25

Java
Java、メソッドシグネチャは、名前とそのパラメータの数、タイプ、および順序で構成されています。戻り型とスローされた例外は、メソッドシグネチャの一部とは見なされず、パラメーターの名前も考慮されません。これらは、メソッドの一意性をチェックするためにコンパイラーによって無視されます。
メソッドシグネチャは、クラス内のオーバーロードされたメソッド(同じ名前のメソッド)を区別するのに役立ちます。リターンタイプはオーバーロードに含まれオーバーロードされたメソッドを区別するには、メソッドシグネチャのみを使用する必要が
たとえば、次の2つのメソッドのシグネチャは異なります。
void doSomething (String [] x ); // doSomething(String [])void doSomething (String x ); // doSomething(String)
次の2つのメソッドはすべて同じシグネチャを持っています。
int doSomething (int x );
// doSomething(int)void doSomething (int y ) は 例外をスローします; // doSomething(int)

ジュリア
ではジュリア、関数のシグネチャは次の形式をとります。
手数料(販売:: Int 、 レート:: Float64 ):: Float64
引数の型は、多重ディスパッチに使用されます。関数が値を返すときに戻り型が検証され、値の型が指定された型と一致しない場合は実行時例外が発生します。
抽象型は許可されており、すべてのサブタイプに共通する一般的な動作を実装することをお勧めします。したがって、上記の関数は次のように書き直すことができます。この場合、関数はそれに応じて任意の整数および実数のサブタイプを受け入れることができます。
手数料(販売::整数、 レート::実数)::実数
関数の引数では、型は完全にオプションです。指定しない場合は、すべてのタイプのスーパータイプであるタイプAnyを使用するのと同じです。引数の型を指定するのは慣用的ですが、戻り型は指定しません。

Objective-C
でObjective-Cのプログラミング言語、オブジェクトのメソッドのシグネチャは、インタフェースヘッダファイルで宣言されています。例えば、- (id )initWithInt:(int )value ;
一般オブジェクト(an )を返し、1つの整数引数を取るメソッドを定義します。Objective-Cでは、署名の型が明示的でない場合にのみ、型が明示的である必要がこの署名は同等です:initWithIntidid- initWithInt: (int型)値。

さび
で錆、関数のシグネチャは次の形式をとります。
fn コミッション(販売:u32 、レート:f64 ) -> f64 ;

も参照してください
署名(論理)

参考文献
^ 「C ++リファレンス:プログラミング用語」。
^ ポールリーヒー。「メソッドシグネチャ」。http://www.about.com/:About.comガイド。メソッドシグネチャは、メソッド宣言の一部です。メソッド名とパラメータリストの組み合わせです。
^ Mössenböck、Hanspeter(2002-03-25)。「高度なC#:可変数のパラメーター」(PDF)。http://ssw.jku.at/Teaching/Lectures/CSharp/Tutorial/:InstitutfürSystemsoftware、JohannesKeplerUniversitätLinz、FachbereichInformatik。NS。52 。取り出さ2011-08-03に。
^ 「第4章クラスファイル形式」。docs.oracle.com 。2021-10-17を取得。