Scala MappedEnum-没有可用的隐式视图

Scala MappedEnum-没有可用的隐式视图,scala,lift,Scala,Lift,有人能帮我理解下面的代码有什么问题吗?问题出在“join”方法内部-我无法设置“state”字段。错误信息为- No implicit view available from code.model.Membership.MembershipState.Val => _14.MembershipState.Value. [error] create.member(user).group(group).state(MembershipState.Accepted).save [

有人能帮我理解下面的代码有什么问题吗?问题出在“join”方法内部-我无法设置“state”字段。错误信息为-

No implicit view available from code.model.Membership.MembershipState.Val => _14.MembershipState.Value.
[error]         create.member(user).group(group).state(MembershipState.Accepted).save
[error]                                                       ^
[error] one error found
[error] (compile:compile) Compilation failed
14是什么意思?我用MappedGender做了类似的尝试,效果和预期的一样,那么为什么MappedEnum失败了呢

scala 2.10 升降机2.5

谢谢

package code
package model

import net.liftweb.mapper._
import net.liftweb.util._
import net.liftweb.common._


class Membership extends LongKeyedMapper[Membership] with IdPK {
  def getSingleton = Membership


  object MembershipState extends Enumeration {
   val Requested = new Val(1, "Requested")
   val Accepted = new Val(2, "Accepted")
   val Denied = new Val(3, "Denied")
  }

  object state extends MappedEnum(this, MembershipState)
  {
    override def defaultValue = MembershipState.Requested
  }

  object member extends MappedLongForeignKey(this, User) {
    override def dbIndexed_? = true
  }


  object group extends MappedLongForeignKey(this, Group) {    
    override def dbIndexed_? = true
  }

}

object Membership extends Membership with LongKeyedMetaMapper[Membership] {
    def join (user : User, group : Group) = {       
        create.member(user).group(group).state(MembershipState.Accepted).save
    } 
}

尝试将您的
成员身份状态
枚举移动到
成员身份类
之外。在我尝试这个之前,我和你犯了同样的错误。不知道为什么,但在我这样做之后编译的代码。

\u 14表示编译器生成的中间匿名值。换句话说,编译器不知道如何以更好的方式表达它正在寻找的类型

但是,如果您忽略了这一点,就会看到编译器正在寻找从[…].Val到[…].Value的转换。我猜这会改变

val Requested = new Val(1, "Requested")

将修复错误

(我很好奇你是从哪里学来的“新瓦尔”风格?)

奇怪的是,Val实际上扩展了值。因此,如果正确地知道外部类型(不推断为奇数_14),那么Val vs.Value就不会有问题。这里的问题是,出于某种原因,Lift定义了setter,以采用现在不推荐的视图绑定语法。也许这会导致编译器,而不是走直线,尝试将输入类型适应预期类型,而是从两端开始,定义起始类型和所需类型,然后开始搜索可以协调两者的隐式视图函数

val Requested = Value(1, "Requested")