Я пытаюсь сортировать по аспекту моего объекта (оценка). Это то, что у меня есть до сих пор, но я получаю сообщения об ошибках, такие как «неопределенный счет метода».Ruby sort_by confusion
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'. –
Добро пожаловать в переполнение стека. Пожалуйста, прочитайте «[mcve]». Если ваш код был правильно отступом, это поможет вам разобраться в проблемах. Ваш код не будет принят Ruby, потому что ему не хватает нескольких операторов 'end'. Кроме того, это действительно плохая идея вызвать класс 'object'. Во-первых, классы должны быть CamelCase, поэтому это будет 'Object', но уже существует класс [Object] (http://ruby-doc.org/core-2.3.1/Object.html) и перезаписывает его. действительно плохая идея. –
Вам действительно нужно очистить этот код, это неправда Ruby. Кроме того, соглашение считает, что методы имеют имена типа 'sort_by_score', а пустые аргументы опущены, то есть'() 'почти никогда не указывается. Назначение неиспользуемых переменных внутри массива также одинаково сбивает с толку и беспорядочно. Помимо всего прочего, не называйте свой класс 'object', поскольку' Object' является основой всех объектов Ruby. – tadman