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) 

请告诉我们。如何解决这个问题呢?

+0

由于'POST'方法定义有两个参数,你” d需要将两个参数传递给'post'如下:'test.post(成功,错误)' – Surya

+0

我试试。它不会消除这个错误。显示相同的错误 – test

+0

您正在传递参数“Ruby Bits!”到'Text'的初始值设定项,但它没有任何参数。 – jordanm

仔细观察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 
+0

显示错误:''后':未定义的方法'验证?'对于#(NoMethodError) \t from level-1.rb:30:in'

' – test

+0

是的,现在你试图调用实例方法进行身份验证?在你的Text类的实例上,但你还没有定义该方法。 –

+0

你必须定义它: class Text def authenticate? #do stuff end end ''' –