なぜスケーラの列挙型を参照できないのか分かりません。スカラーを参照する方法他のパッケージから列挙する
問題は時々、私は列挙型を参照することができるということです。
enum(UserStatus)
、時にはそれは私が時々列挙クラスを参照することはできませんどのように来るのenum
not found: type UserStatus
を見つけることができない文句?
列挙型用に生成されたソースはOKのようです、そしてそれは同じ場所、同じ使用に住んでいる私が持っている別の列挙型を持つ素晴らしい作品...
任意の提案ですか?
詳細情報
がenumのための生成されたソースは、次のとおりです。
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))
これは、フォームバインディングを使用すると、マッパーが列挙型に自動的に変換することを意味します。
疑似コードです。
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)
)
}
私はそれを試しました、魅力のように働きます...クールな解決策:) –
私はそれをコアに引き込もうとしています。しかし私は列挙が彼らがするべきであるように働くことを恥ずべきではない。あなたがコントローラの列挙型を参照することに何らかの問題があるかどうか教えてください。それはコンパイラが私に苦労している場所です。 –
'import models._'はすべてをスコープに入れます。私が追加したのは 'type UserStatus = Value'だけでした(しかし、私はそれが必要であるとは確信していません)。コードをGithubに置くことはできますか?これまでのところ私はそれに問題はないと思う。 –