【发布时间】:2016-05-05 19:58:50
【问题描述】:
我正在尝试(在我的 Scala 应用程序中)建模(在我的 Scala 应用程序中)在我的网页中显示的选项列表,并且正在想出一个解决方案,用于将从客户端发布的 String 值映射到它在后端。
例如。假设它是Animals 的列表,用户可以选择 1 发布到后端。
Animals
Polar Bear
Rabbit
Great White Shark
收到请求时,我想将 Great White Shark String 转换为 Animal,但不确定如何最好地匹配
String 到后端的适当类型。
到目前为止,我有这个。
sealed abstract class Animal(val name: String)
case object GreatWhite extends Animal("Great White Shark")
case object PolarBear extends Animal("Polar Bear")
这允许我将 UI 中的字符串与我的 Scala 应用程序中的相应案例对象匹配。
def matcher(animal: String) = animal match {
case GreatWhite.name => GreatWhite
case PolarBear.name => PolarBear
}
问题
但是,如果 Animal 的列表变长,这个匹配器将非常麻烦,因为我需要为每个 Animal 设置一个 case 表达式。
非常感谢任何有经验的 Scala 人给我指点一个更优雅的解决方案。
【问题讨论】:
-
您使用哪个框架进行客户端 - 后端通信?
-
接口如果是 RESTful API 所以它是一个带有 JSON 主体的 POST。
-
也许玩/喷雾?
-
@Yuval,是的,我目前正在使用 Play 作为后端(可能会使用 Spray 代替,因为如果您不需要 Scala 模板等,我相信它会更轻量级)。前端是一个 Ember 应用程序。
-
次要注意:Spray 已经有一段时间不活动了,Akka HTTP 模块取代了它 - 我认为它是由 Spray 的原作者开发的。
标签: scala