Freewind @ Thoughtworks scala java javascript dart 工具 编程实践 月结 math python english [comments admin] [feed]

(2011-09-13) 怎样实现 ‘aaa := "AAA",即为符号增加函数并隐式转换

广告: 云梯:翻墙vpn (省10元) 土行孙:科研用户翻墙http proxy (有优惠)

我们在写web应用时,经常会在controller中写如此的代码:

context("aaa")="AAA"

这个aaa就是将传给view层的变量。

能否用一种更简化的写法达到同样的效率?可以利用scala中的符号(Symbol),写成:

'aaa := “AAA"

需要做两件事:

  1. 隐式转换

    创建一个symbol的wrapper类,将对符号的操作,转换到它身上。

2.在wrapper类中,定义:=方法

代码如下:

implicit def symbolWrapper(s: Symbol) = new SymbolHelper(s)

var map = Map()

class SymbolHelper(s: Symbol) {
    def :=(value:String) {
        map += (s.name -> value)
    }
}

object testSymbol {
    def main(args : Array[String]) : Unit = {
        'a := "AAA"
        'b := "BBB"
        println(map)
    }
}
comments powered by Disqus