2017-06-02 2 views
0

Ich versuche eine Methode innerhalb einer Klasse zu schreiben, die die Summe der Primzahlen findet. Das ist, was ich habe, so weit:Finde die Summe der Primzahlen kleiner als 100

class Primes 

    require 'rspec' 
    require 'prime' 

    def self_sum_to num 
    Prime.each(num).inject(&:+) 
    end 

end 

Primes.self_sum_to 100 

Der Fehler, den ich bekommen ist:

LoadError: cannot load such file — rspec 
method require in kernel_require.rb at line 55 
method require in kernel_require.rb at line 55 
method <class:Primes> in primes.rb at line 3 
method <main> in primes.rb at line 1' 

Wenn ich 'require rspec' entfernen, erhalte ich die Fehlermeldung:

NoMethodError: undefined method ‘self_sum_to’ for Primes:Class 
method <main> in primes.rb at line 11 

Ich bin nicht sicher Warum bekomme ich diesen Fehler, weil die Methode self.sum_to deklariert wurde.

Jede Hilfe mit diesem wird sehr geschätzt.

+0

_ „self.sum_to erklärt wurde“ _ - Sie die richtigen Syntax bewusst zu sein scheinen, so ich wähle „durch einen einfachen Tippfehler verursacht“ _ _ diese als zu schließen. – Stefan

Antwort

1

Ändern Sie def self_sum_to zu def self.sum_to.

self_sum_to ist nur eine gewöhnliche Methode, während self.sum_to Methode für die gesamte Klasse definiert.

require 'prime' 

class Primes 
    def self.sum_to(num) 
    Prime.each(num).inject(&:+) 
    end 
end 

Primes.sum_to 100 
+0

Vielen Dank. Ich wusste, dass ich in der Nähe war. Dies hat den Fehler behoben, aber wenn ich die Methode am Ende anrufe, bekomme ich keine Ausgabe an die Konsole. Warum das? –

+0

@ sledge_909 wahrscheinlich, weil Sie nichts ausgeben. Versuchen Sie 'puts Primes.sum_to (100)' – Stefan

+0

Danke Stefan. Ich bin so oft im Kreis herumgegangen, dass ich die einfachen Sachen vermisst habe. –

Verwandte Themen