我想按我的對象(分數)的某個方面進行排序。這是我迄今爲止,但我收到的錯誤消息,如「未定義的方法評分」。Ruby sort_by混淆
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
您有'@ score'實例變量,但沒有'score'方法。 –
歡迎來到Stack Overflow。請閱讀「[mcve]」。如果你的代碼正確縮進,它會幫你找出問題。你的代碼不會被Ruby接受,因爲它缺少多個'end'語句。另外,調用一個類「對象」是一個非常糟糕的主意。首先,類應該是CamelCase,所以它應該是Object,但已經有一個[Object](http://ruby-doc.org/core-2.3.1/Object.html)類,並且覆蓋它是一個真是糟糕的主意。 –
你確實需要清除這段代碼,這不是有效的Ruby。此外,約定認爲方法有'sort_by_score'這樣的名稱,而空參數被省略,即'()'幾乎從不指定。在數組內部分配未使用的變量同樣令人困惑和混亂。最重要的是,不要調用你的類'object',因爲'Object'是所有Ruby對象的基礎。 – tadman