2013-01-08 51 views
2

當我在斯卡拉運行playframework時,我有非常奇怪的行爲。我使用了anorm作爲數據庫訪問層,因此我開始做一些代碼,並且看到了非常奇怪的scala編譯器行爲。Playframework,斯卡拉案例類和財產沒有找到

這是工作代碼:

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) 
    }}} 

由於我是一個完全陌生的斯卡拉我以爲_是一些神奇的關鍵字或其他魔法的東西。

因此我將屬性名稱更改爲aBB_AccAd,但沒有編譯錯誤。

哎呀 ...

下一個有趣的事:我改名這AAbbdddsadasdasAAFFFFeeee,我看到再次編譯錯誤。 那麼是什麼促使Scala爲某些文字集合拋出編譯錯誤?

這是一個錯誤? :-)在模式,這與以大寫字母開頭

Compilation error

回答

3

名稱,被解釋爲指的是提取器(具有unapplyunapplySeq方法的對象)變量或對象名稱。由於您尚未聲明這樣的變量或對象,因此Scala找不到它並引發錯誤。

+1

感謝您的快速和良好的答案。所以我發現了Scala的一個新功能:-) –