簡體   English   中英

Scala風格:常量映射與模式匹配

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM