I'm kinda new to Scala and have been working on a piece of code that looks like this:
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 = ???
}
}
I'm kinda confused about how to set the branch variable which is defined as a def in the trait. When I debug I'd like to see branch as a property of the class so its be can be called as :SomeBank.branch because other services depend on branch as a property of the case class SomeBank.
The BranchName that is required as a return is another case class with bunch of details in it.
One hacky way of how I did it is by adding an extra parameter to case class:
case class SomeBank(details: BankDetails, setBranch: Option[BranchName])
extends Bank { val branch = setBranch }
However, this is bad because SomeBank basically has 2 properties that are duplicate i.e setBranch and branch are exactly the same. What would be the best way to do this so that I can just have branch set to what I want?
Case classes are good for modeling immutable data so keep in mind
branchshould be an immutablevalunder the case classSomeBank.You can define
branchdirectly (override valis optional):