繁体   English   中英

Ruby Block语法

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM