Wie der Titel dieser Frage suggeriert: meine Frage ist mehr über Form (idiomatische Konvention) als Funktion. Setzen Kurz und bündig:Idiomatic Scala: Semantischer Unterschied zwischen <Collection> Like und <Collection> Typen?
Was ist der semantische Unterschied zwischen
MyCollectionLike
undMyCollection
?
Als Beispiele: Was ist der Unterschied zwischen StringLike
und String
oder MapLike
und Map
. Bei genauerer Betrachtung der Scala-API-Dokumente kann ich feststellen, dass XLike
normalerweise ein Super-Typ von X
ist. Aber darüber hinaus ist mir der semantische Unterschied zwischen diesen Schichten der Abstraktion nicht klar.
In der Praxis, wenn ich eine neue Klasse/Eigenschaft erstellen würde, würde das Verständnis dieser Unterscheidung hilfreich sein, wenn ich Namen für diese Klasse wähle.
Mein besonderes Problem, wo diese nach oben gekommen ist wie folgt:
ich das Merkmal erstellt werden soll:
SurjectiveMap[K, T]
die gemischt-in werden kann entweder mitMap[K, Set[T]]
oderMapLike[K, SetLike[T]]
. Da ich den semantischen Unterschied zwischen*Like
und*
nicht kenne, bin ich mir nicht sicher, wohin ich gehen soll.