如果我有
val key1 = "mykey"
val key2 = 427
Run Code Online (Sandbox Code Playgroud)
两者都可以哈希吗?我可以做点什么
val compoundKey = key1 + "#" + key2
myhash.put(compoundKey, value)
Run Code Online (Sandbox Code Playgroud)
然而,这似乎有点笨拙
我总是喜欢Tuple上的新数据类型有三个原因:
case class CompoundKey(key1: String, key2: String)
Run Code Online (Sandbox Code Playgroud)
你有一个名字,特别是在编译器警告中," expected CompoundKey"比" expected Tuple2[String,String]" 更清晰.或者它只是帮助您使用类型注释来使您自己的代码更具可读性,尤其是在像Maps这样的嵌套结构中
val k: CompoundKey = expensiveComputationOrNonObviousMethodCallsInARow(...)
val keyMap: Map[CompoundKey,Key] 代替 Map[(String,String),Key]
可以通过名称访问CompoundKey中的子键:
val ckey = CompoundKey("foo","bar")
ckey.key1 代替 ckey._1
String.这意味着如果您更改String为您不必更改Tuple2[String,String]代码的任何内容.只CompoundKey需要进行调整.(我甚至会使用case class Key(str: String)密钥类的包装器)
| 归档时间: |
|
| 查看次数: |
909 次 |
| 最近记录: |