有没有办法简化这段代码:
def test do
var1 = func1()
|> func2()
|> func3()
var2 = if var1 == nil do
var1
else
func4(var1)
end
func5(var2)
end
Run Code Online (Sandbox Code Playgroud)
我想避免创建var2并返回结果.
虽然Dogbert的答案是绝对正确的,但我想展示一些可能用于完全消除中间局部变量的技巧.
ifdef test do
func1()
|> func2()
|> func3()
|> fn
nil -> nil
var -> func4(var)
end.() # ? call the anonymous function inplace
|> func5()
end
Run Code Online (Sandbox Code Playgroud)
if这种方法在这种情况下不起作用,因为func4需要将链式变量作为参数传入,但通常情况下if也可以链接:
def test do
func1()
|> func2()
|> func3()
|> if(do: nil, else: func4())
|> func5()
end
Run Code Online (Sandbox Code Playgroud)
上面有副作用,并不是100%相同== nil,因为false也是falsey,但这个例子的优雅使我觉得值得一提.
| 归档时间: |
|
| 查看次数: |
72 次 |
| 最近记录: |