2017-08-31 1 views
0

EDIT: ok, habe ich die Aufgabe falsch verstanden. Es tut uns leid.Erstellen Sie eine Ruby-Methode, die eine Operation auf Arrays von ganzen Zahlen anwendet

Ich kann wirklich nichts anderes im Web finden und bekomme es nicht selbst. Ich möchte die ungeraden Zahlen aus einem Array von ganzen Zahlen mit einer Methode in Ruby löschen. Aber ich bekomme nur Fehler genau an dem Punkt, an dem ich die Methode definiere. Wie kann ich die Methode dazu bringen, dies zu verstehen?

def even 
    a=[] 
    i=0 
    while i<=a.length 
    a[i]%2 == 1 
     a.delete(a[i]) 
     i+=i 
    end 
end 
even([1,2,3]) 
+0

Ich kann Ihr Problem nicht reproduzieren. Ich bekomme keine "Fehler genau an dem Punkt, an dem ich die Methode definiere". Auch was meinst du mit "ungeraden Einträgen"? Ich würde dies als die ungeraden Indizes interpretieren, aber aus dem Aussehen Ihres Codes scheint es, dass Sie nach ungeraden Einträgen suchen. –

+1

"Ich bekomme Fehler" ist keine genaue Fehlerbeschreibung für uns, um Ihnen zu helfen. * Was * funktioniert nicht? * Wie * funktioniert es nicht? Welche Probleme haben Sie mit Ihrem Code? Erhalten Sie eine Fehlermeldung? Was ist die Fehlermeldung? Ist das Ergebnis nicht das Ergebnis, das Sie erwarten? Welches Ergebnis erwarten Sie und warum, welches Ergebnis erhalten Sie und wie unterscheiden sich die beiden? Ist das Verhalten, das Sie beobachten, nicht das gewünschte Verhalten? Was ist das gewünschte Verhalten und warum, was ist das beobachtete Verhalten und auf welche Weise unterscheiden sie sich? –

+1

Können Sie eine * genaue * Spezifikation angeben, was genau passieren soll, einschließlich aller Regeln, Ausnahmen von diesen Regeln, Eckfälle, Sonderfälle, Grenzfälle und Randfälle? Können Sie Beispieleingaben und -ausgänge bereitstellen, die sowohl im Normalfall als auch in allen Ausnahmen, Eckfällen, Sonderfällen, Grenzfällen und Grenzfällen zeigen, was Sie erwarten? –

Antwort

2

Sie können einfach Ruby-Array verwenden ablehnen Methode wie unten,

arr = [1,2,3,4,5,6,7,8] 
arr.reject{|v| v%2 == 1} 
# => [2, 4, 6, 8] 
+1

Verwenden Sie 'v.odd' 'stattdessen :) –

0

in rubin es in der Regel einfacher ist, in einer funktionalen Weise zu denken. In Ihrem Fall möchten Sie die Liste der Elemente durchlaufen und die geraden auswählen. Um eine Liste zu durchlaufen und Elemente mit einem Vergleichselement auszuwählen, verwenden Sie select. Eine Zahl hat bereits eine Methode, um zu überprüfen, ob sie gerade ist (even?). Die Lösung ist also ganz einfach:

[1,2,3].select(&:even?) 

, die eine neue Liste mit nur den geraden Zahlen zurückgibt. Wenn Sie die Liste an Ort und Stelle ändern möchten, verwenden Sie stattdessen select!.

Verwandte Themen