使用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]
知道如何解决这个问题吗?
答案 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)