Ruby: undefined method `>'
Ich gerade angefangen zu lernen, Ruby und ich lief in heute ein problem.
numResults = /\d+/.match(ie.div(:id, 'results_label').text)
puts "Results found: "+numResults.to_s
while(numResults > 0)
.
. some more code
.
Bekomme ich diesen Fehler in meiner Ausgabe:
Exception: undefined method `>' for #<MatchData:0x424c6d4>
Das ist wirklich seltsam, weil ich aus einer while-Schleife in IRB und es funktionierte gut.
Ich kann nicht der code innerhalb der Schleife ausführen, weil das Programm hält sich an die Bedingung.
Jemand wissen, was ist falsch?
Du musst angemeldet sein, um einen Kommentar abzugeben.
numResults
ist einMatchData
Objekt und kann nicht verglichen werden mit der>
Methode. Sie brauchen, um es in einen string konvertieren, dann konvertieren Sie die Zeichenfolge in eine Zahl:In Fällen, wo die Zeichenfolge nicht dem Ausdruck entsprechen,
numResults
wirdnil
so, wenn es das ist, was Sie testen, Sie werden wollen,
In Fällen, wo die Zeichenfolge hat mit dem Ausdruck übereinstimmen,
numResults
nichtnil
, und darüber hinaus enthält die Anzahl der Spiele ( nur 1 bei den meisten hier, weil Sie nicht über eine Wiederholung match)numResults.size
Anderen Poster müssen im Hinterkopf behalten, dass
numResults
enthält keine Anzahl der gefundenen übereinstimmungen, aber enthält der Wert des tatsächlichen match aus der text-Daten.Während
Funktionieren könnte, nur durch die Gnade
nil.to_s.to_i == 0
.Wenn Sie sich auf
numResults
zu werden, etwas sinnvolles in Sachen regex, match count, Sie waren an der falschen Stelle suchen.Versuchen Sie Ihr while-Bedingung zu:
Wird dadurch gezwungen, die numResults in eine Ganzzahl. Es sieht aus wie es wird als string zurückgegeben, von Ihnen regexp-matcher.
MatchData.to_i
in Wirklichkeit nicht existiert.nil.to_i
existiert, aber nichtMatchData.to_i