如何在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 
  }

}

我关心的是如何使用参数化来构建这样的组件,然后使用为其参数指定的不同语言对其进行配置?

Sarveshseri

在这种情况下,我认为您真的不需要通用。

另外...您的设计感觉还有些不足。无论如何...如果您认为自己有泛型的用例...可以这样做。

改变自己的特质

sealed trait Language {
  val messages: Map[ String, String ]
}

现在像这样定义您的通用类,

class Lang[ A <: Language ]( var language: A = English ) {

  def chosen( lang: A ): Unit = {
    language = lang
  }

  def displayMessage(msg: String): Unit = {
    language messages msg 
  }

}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在Scala中使用泛型

来自分类Dev

如何在HashMap中使用泛型?

来自分类Dev

如何在派生类型中使用泛型方法

来自分类Dev

如何在Java方法中使用泛型

来自分类Dev

如何在泛型参数中使用Java Reflection

来自分类Dev

如何在方法参数中使用泛型类型投影?

来自分类Dev

如何在类中使用Comparable作为泛型参数

来自分类Dev

如何在Java中使用泛型实现工厂模式?

来自分类Dev

如何在TypeScript中使用泛型检测类实例

来自分类Dev

如何在Rust的泛型特征中使用动态调度?

来自分类Dev

如何在模块中使用多泛型?

来自分类Dev

如何在Nim中使用默认泛型类型?

来自分类Dev

如何在React.FC中使用泛型

来自分类Dev

如何在派生类型中使用泛型方法

来自分类Dev

如何在类中使用扩展的泛型类型的类型?

来自分类Dev

如何在方法声明中使用泛型

来自分类Dev

如何在Java中使用泛型复制数组

来自分类Dev

如何在参数需要类中使用泛型

来自分类Dev

如何在扩展方法中使用泛型类型成员?

来自分类Dev

如何在C#中的泛型类中使用泛型类的对象?

来自分类Dev

如何在Java接口中使用泛型的泛型

来自分类Dev

如何在非泛型静态类的多个方法中使用相同的泛型类型

来自分类Dev

如何在Scala中定义泛型?

来自分类Dev

如何在Scala中定义泛型?

来自分类Dev

在Scala中使用具有泛型类型的lambda

来自分类Dev

如何在接口上使用泛型

来自分类Dev

如何在Swift中使用泛型定义类型别名

来自分类Dev

如何在Java中使用不同的泛型构造函数

来自分类Dev

如何在C ++中使用override关键字进行多重泛型继承?