Ruby错误:参数数量错误(1表示0)(ArgumentError)

时间:2017-02-28 04:07:34

标签: ruby

我运行此代码,但收到错误。

代码在这里: -

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)

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

1 个答案:

答案 0 :(得分:0)

仔细查看引发ArgumentError的行号(在您的情况下,第25行)。

您正在将一个参数传递给Text#initialize,但尚未定义一个带有一个参数的initialize版本。

尝试这样做(调用默认的零参数Text构造函数):

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)

或者使用一个参数定义initialize:

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