2013-11-08 9 views
0

Я получаю неопределенную ошибку при использовании метода insured?, чтобы проверить, является ли значение верно:Ruby 2.0.0: undefined метод `застрахован? ' для главного: Объект (NoMethodError)

Код:

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

'Класс объекта; def застрахован ?; end end ", и ошибка исчезнет. –

+0

Вам нужно просто использовать 'застрахованный', а не' застрахованный? 'Здесь. – Dogbert

ответ

2

Единственный раз, когда вы используете знак вопроса, - это объявления метода. Значения, которые имеют тип boolean, никогда не будут иметь ?.

(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) 
Смежные вопросы