假设我们在Python 3.x(我猜想在Python 2.6和Python 2.7中)也有以下函数:
>>> def dbl_a(p): return p*2
>>> def dbl_b(p): return(p*2)
>>> def dbl_c(p): return (p*2)
Run Code Online (Sandbox Code Playgroud)
如果我们运行它们,我们得到:
>>> dbl_a(42)
84
>>> dbl_b(42)
84
>>> dbl_c(42)
84
Run Code Online (Sandbox Code Playgroud)
这三个函数提供相同的结果(值和类型),它们似乎是等价的.
但是哪一个有更正确的return陈述呢?
这些定义中是否有任何副作用?
同样的问题适用于返回多个值的以下情况:
>>> def dbl_triple_a(p): return p*2, p*3
>>> def dbl_triple_b(p): return(p*2, p*3)
>>> def dbl_triple_c(p): return (p*2, p*3)
>>> dbl_triple_a(42)
(84, 126)
>>> dbl_triple_b(42)
(84, 126)
>>> dbl_triple_c(42)
(84, 126)
Run Code Online (Sandbox Code Playgroud)
在这种情况下,每个函数都返回一个元组,但我的问题仍然保持不变.
我想知道为什么Elixir没有数学模块.
我知道我们可以使用Erlang math:模块编写这个:
alias :math, as: Math
Run Code Online (Sandbox Code Playgroud)
但是,将这一行放在我们的Elixir代码中是一种好习惯吗?
在iex它似乎工作:
iex(1)> alias :math, as: Math
nil
iex(2)> Math.pi()
3.141592653589793
iex(3)> Math.pow(3, 2)
9.0
Run Code Online (Sandbox Code Playgroud)
唉,显然我们无法以Elixir方式访问文档:
iex(4)> h(Math)
:math is an Erlang module and, as such, it does not have Elixir-style docs
Run Code Online (Sandbox Code Playgroud)