스칼라 열거 형식을 참조 할 수없는 이유를 이해하는 데 문제가 있습니다.스칼라 참조하는 방법 다른 패키지의 열거 형
문제는 가끔 열거 참조 할 수 있다는 것입니다 :
enum(UserStatus)
을 때로는 약 열거
not found: type UserStatus
어떻게 때로는 열거 클래스를 참조 할 수 없습니다 올를 찾을 수 없다는 불평?
제안 ...
열거의 생성 된 소스는 괜찮을 것, 그리고 내가 같은 장소, 같은 사용에 살고있는이 또 다른 열거와 함께 잘 작동?
더 많은 정보
열거의 생성 된 소스는 다음과 같습니다
public final class models.UserStatus extends java.lang.Object{
public static final scala.Enumeration$Value Busy();
public static final scala.Enumeration$Value Free();
public static final scala.Enumeration$ValueSet$ ValueSet();
public static final scala.Enumeration$Value withName(java.lang.String);
public static final scala.Enumeration$Value apply(int);
public static final int maxId();
public static final scala.Enumeration$ValueSet values();
public static final java.lang.String toString();
}
내가 플레이 프레임 워크 2.0
def enumFormat[E <: Enumeration](enum: E): Formatter[E#Value] = new Formatter[E#Value] {
def bind(key: String, data: Map[String, String]) = {
Formats.stringFormat.bind(key, data).right.flatMap { s =>
scala.util.control.Exception.allCatch[E#Value]
.either(enum.withName(s))
.left.map(e => Seq(FormError(key, "error.enum", Nil)))
}
}
def unbind(key: String, value: E#Value) = Map(key -> value.toString)
}
에 대한 열거 매퍼를 구현하기 위해 노력하고있어
그리고 호출이 방법 매퍼
def enum[E <: Enumeration](enum: E): Mapping[E#Value] = of(enumFormat(enum))
이것은 매퍼가 양식 바인딩을 사용할 때 enum 사이를 자동으로 변환 함을 의미합니다.
가짜 의사 코드.
package models {
object UserStatus extends Enumeration {
val Free = Value("free")
val Busy = Value("busy")
}
case class User(
status: UserStatus.Value = UserStatus.Free
)
}
package controllers {
imports models._
val userForm = Form(
mapping(
"status" -> enum(UserStatus)
)(User.apply)(User.unapply)
)
}
나는 그것을 시험해 보았다. 매력처럼 작동한다. cool solution :) –
나는 그것을 코어에 넣으려고 노력하고있다. 하지만 열거 형은 꼭해야만하는대로 작동하는 것이 좋을 것 같지는 않습니다. 컨트롤러에서 Enum을 참조하는 데 문제가 있는지 알려주십시오. 그건 컴파일러가 나에게 힘든 시간을주는 곳입니다. –
'import models._'는 모든 것을 범위로 가져와야합니다. 내가 추가 한 유일한 것은'type UserStatus = Value'이었습니다 (그러나 나는 그것이 필요하다는 것을 확신하지 못했습니다). Github에 코드를 넣을 수 있습니까? 지금까지 나는 그것에 아무런 문제가 없다. –