[英]Ruby Block syntax
我正在浏览一些在网上找到的代码,发现了以下内容
def change input
('a'..'z').map { |letter| input.downcase.include?(letter) ? '1' : '0' }.join
end
我了解这段代码在做什么。 它将使用一个字符串,检查该字符串是否包含字母表中的每个字母,如果为true,则返回1,如果为false,则返回0。
但是我不熟悉以下语法:
?(letter) ? '1' : '0' }
我知道通常使用问号表示该方法将返回布尔结果。 但是我可以确定为什么在论点之后还有第二个问号。
另外,我知道如果为true,则返回1,如果为false,则返回0。 这就是结肠所代表的。 如果块中方法的结果为布尔值,使用这样的冒号总是可以的吗?
格式boolean_expression ? option_a : option_b
boolean_expression ? option_a : option_b
称为三元运算符。 它的缩写
if boolean_expression
option_a
else
option_b
end
第一个问号是#include吗? 方法
使用condition ? if_true : if_false
condition ? if_true : if_false
称为三元运算符,是三元运算符的简写
if condition
if_true
else
if_false
end
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.