簡體   English   中英

Scala案例類和構造函數

[英]Scala case classes and constructors

我發現自己寫了很多(某種)樣板代碼。 例如,說我有以下特征

trait Foo {
  def x: Int
}

trait Bar {
  def y: Boolean
  def z: String
}

然后我想要一個不多於或少於實現這些的案例類。

case class MyClass(x: Int, y: Boolean, z: String) extends Foo with Bar

這似乎並不令人煩惱,但現在想象我的特征每個都有十幾個def ,並且名稱xyz要長得多。 編寫案例類意味着我必須將所有這些重寫為MyClass參數。

有沒有辦法根據我擴展的特征自動生成x: Int, y: Boolean, z: String構造函數部分?

我認為你正在尋找的是一個可以為你處理這項工作的注釋宏 然后,您可以通過編寫以下內容來調用此宏:

@FieldsFromTraits
case class MyClass extends Foo with Bar

然后,注釋宏可以使用來自特征的信息重寫您的案例類。

執行類似操作的庫是MetaRest 您可能會嘗試調整該實現。 我明白今晚是不是能把東西放在一起。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM