Scala ha il tratto StringLike. Diciamo che voglio creare una classe di casi Name
e internamente dovrebbe salvare il nome con alcuni caratteri. Dovrei usare case class Name(name: StringLike)
o case class Name(name: String)
?
Il primo è ovviamente più astratto. Significa che qualcuno può darmi CustomString
che estende StringLike
e potrebbe sovrascrivere alcuni metodi.
Se voglio essere sicuro che l'argomento dato si comporti come la classe String
che conosco, dovrei usare String
e altro StringLike
. È corretto? Ci sono casi in cui farebbe praticamente la differenza?
Inoltre, ci sono cose che posso fare con il String
più specializzato che non posso fare con un StringLike
?