Как передать параметры сделать звонок в Logger.info? - PullRequest
0 голосов
/ 09 декабря 2010

У меня есть такой метод, как:

def test(p1, p2)
   logger.info 'calling test with p1=' + p1 + ' p2 = ' + p2
end

Получение ошибки приведения, как мне делать это аккуратно?

1 Ответ

1 голос
/ 09 декабря 2010

Ваша ошибка приведения, вероятно, связана с тем, что p1 или p2 не является строковым типом. Интерполяция строк в Ruby поможет вам:

def test(p1, p2)
  logger.info "calling test with p1=#{p1} p2=#{p2}"
end

Вот как это работает: ruby ​​вызывает to_s для любых переменных в строке (обозначается #{}), которые преобразуют их в строку. У каждого объекта в ruby ​​есть этот метод, поэтому вам не нужно беспокоиться об этом. Надеюсь, это поможет!

ОБНОВЛЕНИЕ: Это был простой, но интересный вопрос, потому что в нем есть нечто большее, чем кажется на первый взгляд (например, трансформаторы). То, как Ruby делает это, фактически открывает двери для функциональности, которую вы можете использовать в своих собственных классах. Я превратил ответ в пост в блоге с примерами кода и более подробным объяснением:

Интерполяция строки Ruby

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