Я добавляю вход в свое приложение Play, и чтобы избежать громоздкого и повторяющегося кода, я создал класс case с функцией форматирования внутри для очистки моих журналов:
final case class LogMessage(keyValuePairs: (String, String)*) {
def jsonify: String =
s"""{${keyValuePairs map { case (key, value) => s""""$key":"$value"""" } mkString "," }}"""
}
В настоящее время, чтобы вызвать этот метод, я должен сделать что-то вроде:
Logger.info(LogMessage(("message", s"here is my message")).jsonify)
// jsonify prints:
// {"message":"here is my message"}
Это работает нормально, но мне не нравится, как мне нужно писать .jsonify
после того, как я создаю новый класс case,Есть ли способ сделать этот метод автоматически вызываемым при создании класса LogMessage
, чтобы у меня не было написано jsonify
во всем моем коде?Я читал о неявных методах, но простое изменение метода на implicit def jsonify = ...
ничего не делает.