写一个函数来返回" true"或"假"如果通过" 1" /" 0"或" true" /" false"

时间:2014-12-15 22:32:15

标签: ruby

我需要一个简单的函数来返回“true”或“false”传递给它的参数是:

10,或truefalse

我目前有这样的事情,所以如果可能的话,答案应该简洁如下:

def boolean(value); return value ? ( value == 1 ? "true" : "false) : nil; end

感谢。

3 个答案:

答案 0 :(得分:5)

一些想法:

def boolean(x)
   %w{1 true}.include?(x).to_s
end

def boolean(x)
  (x == '1' || x == 'true').to_s
end

还有wannabe bool宝石:

require 'wannabe_bool'

'1'.to_b # => true
'0'.to_b # => false

'true'.to_b  # => true
'false'.to_b # => false

答案 1 :(得分:1)

您可能想了解Rails如何在其数据库连接适配器中进行类型转换:

TRUE_VALUES = [true, 1, '1', 't', 'T', 'true', 'TRUE', 'on', 'ON'].to_set

# convert something to a boolean
def value_to_boolean(value)
  if value.is_a?(String) && value.empty?
    nil
  else
    TRUE_VALUES.include?(value)
  end
end

请参阅:docs for ActiveRecord::ConnectionAdapters::Column

答案 2 :(得分:0)

我认为这会奏效,但欢迎评论:

def b(k); return k ? ( (k == "1" || k == "true") ? "true" : "false" ) : nil; end

puts b("1")
puts b("0")

puts b("true")
puts b("false")

结果:

true
false
true
false