Ruby错误:参数数量错误(1代表0)(ArgumentError)
我正在运行此代码,但出现错误。Ruby错误:参数数量错误(1代表0)(ArgumentError)
代码在这里: -
class Text
def post(success, error)
if authenticate?(@user, @password)
success.call
else
erro.call
end
end
end
text = Text.new('Ruby Bits!')
success = ->{ puts "Sent!"}
error = ->{ raise 'Auth error'}
text.post(success,error)
请告诉我们。如何解决这个问题呢?
仔细观察ArgumentError从哪个行号引发(在你的案例中,第25行)。
您将一个参数传递给Text#initialize,但尚未定义带有一个参数的初始化版本。
试试这个(调用默认的,无参数的构造函数文本):
class Text
def post(success, error)
if authenticate?(@user, @password)
success.call
else
error.call
end
end
end
text = Text.new
success = ->{ puts "Sent!"}
error = ->{ raise 'Auth error'}
text.post(success, error)
或定义一个参数初始化:
class Text
def initialize(your_meaningful_argument)
# do stuff
end
def post(success, error)
if authenticate?(@user, @password)
success.call
else
error.call
end
end
end
显示错误:''后':未定义的方法'验证?'对于#
是的,现在你试图调用实例方法进行身份验证?在你的Text类的实例上,但你还没有定义该方法。 –
你必须定义它: class Text def authenticate? #do stuff end end ''' –
由于'POST'方法定义有两个参数,你” d需要将两个参数传递给'post'如下:'test.post(成功,错误)' – Surya
我试试。它不会消除这个错误。显示相同的错误 – test
您正在传递参数“Ruby Bits!”到'Text'的初始值设定项,但它没有任何参数。 – jordanm