我對 Scala 有點陌生,并且一直在撰寫如下所示的代碼:
sealed trait Bank {
def branch: Option[BranchName]
}
case object Bank {
case class SomeBank(details: BankDetails)
extends Bank {
// NEED TO SET BRANCH HERE IN A VAL
val branch = ???
}
}
我對如何設定在def特征中定義為 a 的分支變數有點困惑。當我除錯時,我希望將其視為類的屬性branch,因此可以將其稱為 :SomeBank.branch因為其他服務依賴于.branchcase class SomeBank
作為回報所需的BranchName是另一個案例類,其中包含大量詳細資訊。
我如何做到這一點的一種hacky方法是向案例類添加一個額外的引數:
case class SomeBank(details: BankDetails, setBranch: Option[BranchName])
extends Bank { val branch = setBranch }
然而,這很糟糕,因為SomeBank基本上有 2 個屬性是重復的,即 setBranch 和 branch 完全相同。這樣做的最佳方法是什么,以便我可以branch設定為我想要的?
uj5u.com熱心網友回復:
案例類有利于對不可變資料進行建模,因此請記住在案例類下branch應該是不可變的。valSomeBank
您可以branch直接定義(override val可選):
case class SomeBank(
details: BankDetails,
override val branch: Option[BranchName]
) extends Bank
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/489615.html
標籤:爪哇 斯卡拉 sbt 性状 scala-2.10
