Использование «включить?»проверить, есть ли пробел в строке - PullRequest
0 голосов
/ 01 октября 2018

Я проверяю, есть ли в имени @fm1 пробел (поскольку у собаки нет фамилии).

def family_member?
  if @fm1.include?(" ")
    puts @fm1.split(/ |\_|\-/).map(&:capitalize).join(" ") + " is a puppy!"
  elsif @fm1.include?("schnider")
    puts @fm1.split(/ |\_|\-/).map(&:capitalize).join(" ") + " is Schnider's member."
  else
    puts @fm1.split(/ |\_|\-/).map(&:capitalize).join(" ") + " is a guest."
  end
end

Когда я делаю if @fm1.include?(" "), он показывает результат после else.Я хотел бы знать, есть ли какой-либо метод.Можете ли вы помочь мне закончить это?

1 Ответ

0 голосов
/ 01 октября 2018

Самый лучший способ сделать это в Ruby - это case и регулярные выражения:

def family_member_text
  name = @fm1.split(/ |\_|\-/).map(&:capitalize).join(" ")

  case (@fm1)
  when /\s/
    "#{name} is a puppy!"
  when /schnider/i
    "#{name} is Schnider's member."
  else
    "#{name} is a guest."
  end
end

Где этот метод возвращает текст, который вы можете, но не обязаны передавать на puts, чтоприводит к более модульной конструкции кода.Помните ваши принципы SOLID .

Обратите внимание, что я также применил здесь DRY (не повторяйте себя) для очистки кода канонизации дублированного имени.Это также, вероятно, неправильно, потому что такие имена, как «Леонардо да Винчи», не имеют заглавной буквы «Да».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...