scala – 如何定义此方法的结果类型?
发布时间:2020-12-16 09:52:28 所属栏目:安全 来源:网络整理
导读:在以下情况中,如何定义方法返回类型: 工作代码 def deleteInstance(model: String,uid: Long) = model match { case "menu" = Model.all(classOf[Menu]).filter("uid",uid).get().delete() case "articles" = Model.all(classOf[Articles]).filter("uid",ui
在以下情况中,如何定义方法返回类型:
工作代码 def deleteInstance(model: String,uid: Long) = model match { case "menu" => Model.all(classOf[Menu]).filter("uid",uid).get().delete() case "articles" => Model.all(classOf[Articles]).filter("uid",uid).get().delete() case "news" => Model.all(classOf[News]).filter("uid",uid).get().delete() case "image" =>Model.all(classOf[Image]).filter("uid",uid).get().delete() case "files" =>Model.all(classOf[Files]).filter("uid",uid).get().delete() case _ => false } 非工作代码: class ModelManager{ def getModel(model: String) = { model match{ case "menu" => classOf[Menu] case "articles" => classOf[Articles] case _ => false } def deleteInstance(model:String,uid: Long) = { Model.all(getModel(model)).filter("uid",uid).get().delete() } } } 引发的错误是:
解决方法
看起来你需要一个
Option:
class ModelManager{ def getModel(model: String) = model match { case "menu" => Some(classOf[Menu]) case "articles" => Some(classOf[Articles]) case _ => None } def deleteInstance(model:String,uid: Long) = getModel(model) map { m => Model.all(m).filter("uid",uid).get().delete() } getOrElse false } 您可以将Option视为最多可容纳一个元素的容器.包含元素x的选项是Some(x).空选项为无. Option有几种有用的方法,包括上面使用的map和getOrElse方法. map方法将函数应用于“容器”的每个元素.当然,如果容器是None,它什么也不做(除了可能改变Option的静态类型).在您的情况下(假设delete返回一个布尔值),map方法会将Option [Class]更改为Option [Boolean]. getOrElse方法返回选项的元素(如果有),否则返回默认值(在本例中为false). 请注意,您还可以使用PartialFunction中定义的condOpt方法简化实现: class ModelManager{ def getModel(model: String) = condOpt(model) { case "menu" => classOf[Menu] case "articles" => classOf[Articles] } def deleteInstance(model:String,uid).get().delete() } getOrElse false } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |