最近在閱讀 Programming in Scala 這本書,書中在第十九章時,提到當我們在建立 Map 時常使用的語法︰
Map(1->"one",2->"two",3->"three")
當中的 -> 並不是內建在 scala 語言本身,而是透過一些機制所建立的語法糖衣。於是好奇就去 trace 了一下 collection/mutable/Map.scala 檔,看看這個糖衣本身是怎麼被實作出來的。後來發現其實並不難,實作方式可以參考下列的 code:
object MyMap { def apply() = new MyMap[String, String](); } class MyMap[A, B] { def +=(key: A): MapTo = new MapTo(key); class MapTo(key: A) { def -> (value: B) { println("key:\t" + key); println("value:\t" + value); } } }
使用方式︰
val myMap = MyMap(); myMap += "one" -> "1"
0 意見:
張貼留言