在 Elixir 中如何检查类型,例如在 Python 中:
>>> a = "test"
>>> type(a)
<type 'str'>
>>> b =10
>>> type(b)
<type 'int'>
我在 Elixir 中读到有类型检查器,例如“is_bitstring”、“is_float”、“is_list”、“is_map”等,但是如果您不知道类型可能是什么怎么办?
最佳答案
从 elixir 1.2 开始,iex 中有一个 i
命令,它将列出任何 Elixir 变量的类型和更多信息。
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
命令的代码,您会发现这是通过协议(protocol)实现的。
https://github.com/elixir-lang/elixir/blob/master/lib/iex/lib/iex/info.ex
如果您想在 Elixir 中为任何数据类型实现一个函数,方法是为您希望该函数处理的所有数据类型定义一个协议(protocol)并实现该协议(protocol)。不幸的是,你不能在守卫中使用协议(protocol)函数。然而,简单的“类型”协议(protocol)实现起来非常简单。
关于elixir - 在 Elixir 中如何检查变量的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28377135/