2017-02-28 28 views
-2

Ich bin diesen Code ausgeführt, aber ich bekomme einen Fehler.Ruby Fehler: falsche Anzahl der Argumente (1 für 0) (ArgumentError)

Code hier: -

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) 

Bitte sagen Sie uns. Wie man dieses Problem löst?

+0

Da 'Post' Methodendefinition hat zwei Parameter, Sie‘ d muss zwei Argumente wie folgt an "post" übergeben: 'test.post (Erfolg, Fehler)' – Surya

+0

Ich versuche es. Es entfernt diesen Fehler nicht. Zeige denselben Fehler – test

+0

Du gibst den Arg "Ruby Bits!" an den Initialisierer von 'Text', benötigt aber keine Argumente. – jordanm

Antwort

0

Achten Sie genau auf die Zeilennummer, von der der ArgumentError ausgelöst wird (in Ihrem Fall Zeile 25).

Sie übergeben ein Argument an den Text # initialize, haben jedoch keine Version von initialize definiert, die ein Argument benötigt.

dieses Versuchen Sie stattdessen (Aufruf der Standardwert Null Argument Text Konstruktor):

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) 

Oder definieren initialisieren mit einem Argument:

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

show error: - 'post ': undefinierte Methode' authenticate?' für # (NoMethodError) \t von level-1.rb: 30: in '

' – test

+0

Ja, jetzt versuchen Sie, die Instanzmethode authenticate aufzurufen? auf Ihrer Instanz der Text-Klasse, aber Sie haben diese Methode nicht definiert. –

+0

Sie müssen es definieren: Klasse Text def authentifizieren? # Do Zeug Ende Ende '' ' –

Verwandte Themen