红宝石:对方法未定义的方法错误调用后定义

问题描述:

我不知道这里发生了什么......但说我这样做:红宝石:对方法未定义的方法错误调用后定义

def who_wins?(choice1, choice2) 
    if (choice1 == 'R' && choice2 == 'S') || (choice1 == 'S' && choice2 == 'P') || (choice1 == 'P' && choice2 == 'R') 
     return choice1 
    elsif choice1 == choice2 
     return "tie" 
    else 
     raise NoSuchStrategyError 
    end 
end 

won_wins?('R', 'P') 

它给了我下面的错误:

NoMethodError: undefined method `won_wins?' for main:Object 

at top level in my-file.rb at line 25 

为什么会这样做,即使我在定义之后调用方法?

+3

因为你命名你的方法'who_wins?'和你试图调用'won_wins?'? – chrisn 2012-03-11 22:51:04

+2

除了这是一个打字错误的事实之外,您正试图提高一个班级,而不是班级的错误。你想要的是'提高NoSuchStratagyError.new' – Linuxios 2012-03-11 23:02:13

+0

谢谢你指出......我的错误#fail。 @ Linux_iOS.rb.cpp.c.lisp.m.sh谢谢你指出,你是对的。我确实需要一个类的实例,而不是实际的类。但是,出于好奇,为什么它会工作,如果我'提出NoSuchStrategyError'? – marcamillion 2012-03-12 22:39:05

您键入won_wins?而不是who_wins?

+0

非常感谢。哑,愚蠢的错误。 – marcamillion 2012-03-12 22:34:12

+0

不是那么愚蠢,真的 – JDS 2013-03-14 19:32:05