Ich bevorzuge den neuen Datentyp über Tuple aus drei Gründen:
%Vor% Sie haben einen Namen, insbesondere in Compiler-Warnungen und ein " expected CompoundKey
" ist klarer als ein " expected Tuple2[String,String]
". Oder es hilft Ihnen einfach mit einer Typ-Annotation, Ihren eigenen Code lesbarer zu machen, besonders in verschachtelten Strukturen wie Maps
val k: CompoundKey = expensiveComputationOrNonObviousMethodCallsInARow(...)
val keyMap: Map[CompoundKey,Key]
anstelle von Map[(String,String),Key]
Der Zugriff auf die Unterschlüssel in CompoundKey kann nach Name erfolgen:
val ckey = CompoundKey("foo","bar")
ckey.key1
anstelle von ckey._1
String
, ändern. Das bedeutet, wenn Sie String
zu dem ändern, was Sie Tuple2[String,String]
nicht im gesamten Code ändern müssen. Nur CompoundKey
muss angepasst werden. (Ich würde sogar einen Wrapper case class Key(str: String)
für die Schlüsselklasse verwenden)
Tags und Links scala