Ruby 2.0.0:未定义的方法`保险?' for main:Object(NoMethodError)

时间:2013-11-08 11:52:38

标签: ruby boolean

使用insured?检查值是否为true时,我收到一个未定义的方法错误:

代码:

car_rental = 100
insured = true
extra_insurance_fee = 10
damages = 30

renter_payment = car_rental + (insured? ? extra_insurance_fee : damages)

puts renter_payment

控制台输出:

/Users/###/Desktop/test.rb:6:in `<main>': undefined method `insured?' for main:Object (NoMethodError)
[Finished in 0.1s with exit code 1]
[shell_cmd: ruby "/Users/###/Desktop/test.rb"]
[dir: /Users/###/Desktop]
[path: /usr/bin:/bin:/usr/sbin:/sbin]

知道如何解决这个问题吗?

1 个答案:

答案 0 :(得分:2)

您使用问号的唯一时间是方法声明。 布尔类型的值永远不会有?

(insured ? extra_insurance_fee : damages)
在你的情况下,

是正确的。

一个例子

my_array = [1,2,3]

if my_array.empty?
  //do stuff
end

(my_array.empty? ? puts "nooooo" : puts my_array)