3
我寫階以下使用情況:爲什麼scala Map沒有實現無法應用?
val wordShortcut = Map("volume" -> "vol", "report" -> "rpt", ...)
object WordShortcutCase {
def unapply(key: String): Option[String] = wordShortcut.get(key)
}
val pluralR = "(.+)s".r
def encodeToken(token: String) = token match {
case WordShortcutCase(short) => short
case pluralR(singular) => singular
case _ => token
}
如果斯卡拉Map
將實施unapply
,我就不需要額外的WordShortcutCase
對象(我可以使用case wordShortcut(short) => short
instead`)。這對我來說似乎是一種常見的模式。
所以問題是爲什麼scala Map
沒有實現unapply
方法?
我不明白「Map」上的模式匹配是如何實現的。 'Map.get'對我來說更有意義。 –
那麼map的'unapply'的返回類型是什麼? – Haspemulator
這是1.罕見的場合。 2.語義上令人沮喪的是,奇怪的是'key'是'value'的'mapping',當你通常以相反的方式看到它時 – Odomontois