scala で playframework を実行すると、非常に奇妙な動作が発生します。データベース アクセス レイヤーとして anorm を使用したため、いくつかのコードを実行し始めたところ、非常に奇妙な scala コンパイラの動作が見られました。
これは動作しているコードです:
case class P_Page_Control(Control_ID:Int,
Client_ID:String,
cContent: String,
Page_ID: Int,
Language_ID: Int,
InsertTime: Date,
ChangeTime: Option[Date],
IsDeleted: Boolean)
と:
object P_Page_Control { val parser = {
get[Int]("Control_ID") ~
get[String]("Client_ID") ~
get[String]("Content") ~
get[Int]("Page_ID") ~
get[Int]("Language_ID") ~
get[Date]("InsertTime") ~
get[Option[Date]]("ChangeTime") ~
get[Boolean]("IsDeleted") map {
case a ~ b ~ c ~ d ~ e ~ f ~ g ~ h =>
P_Page_Control(a, b, c, d, e, f, g, h)
}}}
今のところコンパイルエラーはありません。正常に動作します。しかし、プロパティ名を変更するとエラーが発生しました:
object P_Page_Control { val parser = {
get[Int]("Control_ID") ~
get[String]("Client_ID") ~
get[String]("Content") ~
get[Int]("Page_ID") ~
get[Int]("Language_ID") ~
get[Date]("InsertTime") ~
get[Option[Date]]("ChangeTime") ~
get[Boolean]("IsDeleted") map {
case A_B ~ b ~ c ~ d ~ e ~ f ~ g ~ h =>
P_Page_Control(A_B, b, c, d, e, f, g, h)
}}}
私は Scala にまったく慣れていないので_
、魔法のキーワードまたはその他の魔法のものだと思いました。
そのため、プロパティ名を に変更しましaBB_AccAd
たが、コンパイル エラーは発生しませんでした。
おっと...
次の面白いこと: これを に名前を変更したところAAbbdddsadasdasAAFFFFeeee
、再びコンパイル エラーが発生しました。では、Scala がリテラルのセットに対してコンパイル エラーをスローする動機は何でしょう?
これはバグですか、それとも機能ですか? :-)