Elixir-typespecs
Elixir-タイプスペック
Elixirは動的に型指定された言語であるため、Elixirのすべての型はランタイムによって推測されます。 それにもかかわらず、Elixirにはtypespecが付属しています。これは、*カスタムデータ型の宣言と型付き関数のシグネチャ(仕様)*の宣言に使用される表記法です。
機能仕様(仕様)
デフォルトでは、Elixirは整数やpidなどのいくつかの基本型、および複雑な型も提供します。たとえば、 round 関数は、floatを最も近い整数に丸め、数値を引数(整数またはfloat )整数を返します。 関連するhttps://elixir-lang.org/docs/stable/elixir/Kernell#round/1[documentation]では、丸められた署名は次のように書かれています-
上記の説明は、左側の関数が括弧で指定されたものを引数として受け取り、::の右側にあるもの、つまり整数を返すことを意味します。 関数仕様は、関数定義の直前に置かれた @ spec ディレクティブで記述されます。 ラウンド関数は次のように書くことができます-
Typespecは複雑な型もサポートしています。たとえば、整数のリストを返す場合は、 [Integer] を使用できます
カスタムタイプ
Elixirは多くの便利な組み込み型を提供しますが、必要に応じてカスタム型を定義すると便利です。 これは、@ typeディレクティブを使用してモジュールを定義するときに実行できます。 同じことを理解するための例を考えてみましょう-
上記のプログラムが実行されると、次の結果が生成されます-
注-@typeを介して定義されたカスタムタイプはエクスポートされ、定義されているモジュールの外部で利用可能です。 カスタムタイプをプライベートに保ちたい場合は、 @ type の代わりに @ typep ディレクティブを使用できます。