[英]Scala style: constant map vs pattern matching
我需要在scala中聲明一個常量映射,然后使它更合適些。 Java的方式是
private static final String[] numbers = {"zero","one","two","three"} //Java
val numbers = Array("zero","one","two","three") //Scala
val numbers = collection.immutable.HashMap(0 -> "zero", 1 -> "one", 2 => "two") //Scala maps
在Scala中執行此操作的另一種方法是
def array(i: Int) = i match {
case 0 => "zero"
case 1 => "one"
case 2 => "two"
}
Scala中有標准/推薦的方法嗎?
Map提供了普通函數無法提供的功能。 例如,您可以枚舉/掃描/遍歷/過濾現有鍵和值。 映射/縮小/變換等。(盡管有其他答案,您也可以使用默認值或在缺少鍵的情況下生成錯誤)。
如果您不需要這些,就沒有太大區別了……除了,如果條目數量相當大,訪問Map
通常比評估靜態模式要快。
並不是的。 這取決於目的。 這是生成密鑰的版本:
List("zero", "one", "two", "three").zipWithIndex.map(_.swap).toMap
(如果您可以使用索引,則仍然是Map)
我已經看到了根據上下文使用的兩種方法。
如果您需要序列化映射或將其傳遞或保留其不同版本,則使用Map會更好。
否則,模式匹配可能會更好。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.