Elixirで変数の型を確認するにはどうすればいいですか?質問する

Elixirで変数の型を確認するにはどうすればいいですか?質問する

Elixir では、Python のように型をどのようにチェックしますか?

>>> a = "test"
>>> type(a)
<type 'str'>
>>> b =10
>>> type(b)
<type 'int'>

Elixir には 'is_bitstring'、'is_float'、'is_list'、'is_map' などの型チェッカーがあると読みましたが、型が何であるか全く分からない場合はどうすればよいでしょうか?

ベストアンサー1

elixir 1.2 以降では、i任意の Elixir 変数の型などを一覧表示するコマンドが iex に用意されています。

iex> foo = "a string" 
iex> i foo 
Term
 "a string"
Data type
 BitString
Byte size
 8
Description
 This is a string: a UTF-8 encoded binary. It's printed surrounded by
 "double quotes" because all UTF-8 encoded codepoints in it are        printable.
Raw representation
  <<97, 32, 115, 116, 114, 105, 110, 103>>
Reference modules
  String, :binary

コマンドのコードを見てみると、iこれがプロトコルを介して実装されていることがわかります。

参考:

Elixir で任意のデータ型の関数を実装したい場合、その方法は、関数が動作するすべてのデータ型に対してプロトコルとプロトコルの実装を定義することです。残念ながら、ガードではプロトコル関数を使用できません。ただし、単純な「型」プロトコルであれば、実装は非常に簡単です。

おすすめ記事