Cis*_*tin 1 ruby syntax lambda functional-programming
我想用 Ruby 编写一个条件 lambda。我想写的 Python 等效项是:
even = (lambda x: x if x % 2 == 0 else 0)
Run Code Online (Sandbox Code Playgroud)
我尝试用 Ruby 编写此代码,如下所示:
even = -> (x) {x if x % 2 == 0 else 0}
Run Code Online (Sandbox Code Playgroud)
不幸的是,这不起作用。有没有什么办法解决这一问题?
您在这里有多种选择来表达这一点。长形式是这样的:
if (x % 2 == 0)
x
else
0
end
Run Code Online (Sandbox Code Playgroud)
请注意,尾随的if
orunless
不能有像 之类的次要条件else
。您需要使用完整的表格。
如果你想要一个简短的版本,你可以使用三元运算符:
(x % 2 == 0) ? x : 0
Run Code Online (Sandbox Code Playgroud)
你还可以做的是:
(x % 2 == 0) and x or 0
Run Code Online (Sandbox Code Playgroud)
正如其他人所观察到的,有一个名为的方法even?
可以为您进行取模,因此可以进一步崩溃:
x.even? ? x : 0
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2738 次 |
最近记录: |