在Ruby中使用三元运算符进行布尔检查

时间:2016-07-08 11:47:01

标签: ruby boolean ternary-operator

有这样的代码

def f(string)
     if string.start_with? 'a'
         return true
     else
         return false
     end
end

试着写string.start_with? 'a' ? 'true' : 'false'给了我警告 warning: string literal in condition并且无法按预期工作。 这不是关于给定警告的问题,而是关于Ruby中三元运算符的正确语法 题: 是否可以使用三元运算符重写上面的代码?

1 个答案:

答案 0 :(得分:5)

为什么不呢:

def f(string)
  string.start_with? 'a'
end

在您的情况下,ruby按照下一个顺序执行代码:

string.start_with? ('a' ? true : false)
# expected
string.start_with?('a') ? 'true' : 'false'