Сравнение длины двух строк с Ruby

Определите метод first_longer_than_second с параметром first и другим параметром second. Метод вернет true, если переданное слово first больше или равно длине слова second. В противном случае возвращает false. Вот как будет вызываться метод и ожидаемый результат:

Вот что у меня есть:

def first_longer_than_second(first, second)
   if first.length >= second.length
     puts true
   else
     puts false
   end
end

Я получаю ошибки, и я не уверен, почему.


person Lkoprivica    schedule 23.05.2017    source источник
comment
не могли бы вы опубликовать, какие ошибки вы получаете?   -  person bork    schedule 23.05.2017
comment
Пожалуйста, отформатируйте свой код правильно - мета. stackexchange.com/questions/18614/   -  person skwidbreth    schedule 23.05.2017
comment
выстрелил в темноте, не зная ваших ошибок, но puts печатает строку, а затем возвращает nil, что, похоже, не то, что должен делать ваш метод...   -  person jmschles    schedule 23.05.2017


Ответы (1)


Операторы сравнения Ruby, такие как >=, естественным образом возвращают логические значения. Вам не нужно использовать условное выражение, и вы почти никогда не захотите возвращать строковые эквиваленты true и false. Кроме того, соглашение Ruby заключается в использовании вопросительного знака в именах методов, которые возвращают логические значения.

Для такого метода Ruby позволяет написать следующее:

def first_longer_than_second?(first, second)
  first.length >= second.length
end

Затем вы можете вызвать метод следующим образом:

>> first_longer_than_second?('hello', 'sir')
=> true

Обратите внимание, что имя метода несколько сбивает с толку, так как оно возвращает true, если first имеет ту же длину, что и second. Вы можете переименовать метод соответствующим образом. Имена имеют значение!

person moveson    schedule 23.05.2017