Ich versuche nach einem Aspekt meines Objekts (Score) zu sortieren. Das habe ich bisher, aber ich bekomme Fehlermeldungen wie "undefined method score".Ruby sort_by Verwirrung
class object
def initialize(likes, comments, score)
@no_of_likes=likes
@no_of_comments=comments
@score =score
def calculateScore
#Assigns a score to each element of the array, based off of algorithm
@score = (@no_of_likes + @no_of_comments)
end
def sortByScore()
arr = [o1 =Object.new(40, 35, 0), o2 =Object.new(100, 2, 0), o3 = Object.new(1, 150, 0)]
for obj in arr
obj.calculateScore
end
#sorts by score
arr = ar.sort_by &:score
puts arr.inspect
end
Sie haben eine '@ score'-Instanzvariable, aber keine 'score'-Methode. –
Willkommen bei Stack Overflow. Bitte lesen Sie "[mcve]". Wenn Ihr Code korrekt eingerückt ist, können Sie Probleme erkennen. Ihr Code wird von Ruby nicht akzeptiert, da er mehrere 'end'-Anweisungen nicht enthält. Außerdem ist es eine sehr schlechte Idee, eine Klasse 'Objekt' zu nennen. Zuerst sollten die Klassen CamelCase sein, also wäre es "Object", aber es gibt bereits eine Klasse [Object] (http://ruby-doc.org/core-2.3.1/Object.html), die überschrieben wird wirklich schlechte Idee. –
Sie müssen wirklich diesen Code aufräumen, das ist Ruby nicht gültig. Zusätzlich hält convention fest, dass Methoden Namen wie 'sort_by_score' haben und leere Argumente weggelassen werden, dh'() 'wird fast nie angegeben. Ungewohnt und chaotisch ist es auch, ungenutzte Variablen innerhalb eines Arrays zu vergeben. Darüber hinaus sollten Sie Ihre Klasse 'Objekt' nicht nennen, da' Objekt' die Basis aller Ruby-Objekte ist. – tadman