Я закодирован этот компонент, чередовать между различными языками:как использовать дженерики в Scala
import scala.collection.mutable.Map
sealed trait Language
case object English extends Language {
val messages: Map[String, String] =
Map("M01" -> "Ready for cooking - press START",
"M02" -> "Close the door to start cooking")
}
case object French extends Language {
val messages: Map[String, String] =
Map("M01" -> "Pret pour la cuisson - presse START",
"M02" -> "Fermez la porte pour commencer la cuisson")
}
class Lang {
//The default Language
private var language: Language = English
def chosen(lang: Language) = language = lang
def displayMessage(msg: String) = language match {
case English => English messages msg
case French => French messages msg
}
}
Меня беспокоит то, как использовать параметризацию, чтобы построить такой компонент, а затем настроить его на разных языках, данных его параметр?
«ваш дизайн чувствует что-то от об этом» - вы думаете, что я сделал плохо дизайн? Я хотел бы знать, так ли это, потому что я намерен попробовать разные способы разработки, и вы знаете, что у Scala есть много способов сделать что-то и понять, что является предпочтительным! Спасибо за решение. – Valerin
@ Valerin Дизайн, плохой или хороший, полностью зависит от варианта использования. Итак ... Я не знаю, плохо это или хорошо для вашего случая использования. Но для меня это выглядит необычно. –
Мы не можем вызывать поле 'messages', хотя эта ссылка:' language messages msg' – Valerin