您的位置:首页 > 其它

【scala系列4】使用富包装器或隐含类类型为值类添加函数

2014-05-12 13:39 183 查看
本文使用富包装器以及隐含类类型两种方法为基本类型添加函数。

使Boolean类型支持 a xor b
a xnor b
 的操作(xor运算也可以直接用符号^)。

由于学scala不久,所以代码写的不好,有优化的地方还望指教。

使用富包装器

/********************************************
* @author : cf
* @date   : 2014/05/12
* @brief  : 使用富包装器为值类添加函数
*
********************************************/

import language.implicitConversions

object Example{
implicit def BooleanToWrapper(b:Boolean) = BooleanWrapper(b)

case class BooleanWrapper(b:Boolean){
//同或运算
def xnor(rb:Boolean) = (b && rb) || (!b && !rb)

//异或运算
def xor(rb:Boolean) = (b && !rb) || (!b && rb)
}

def main(args: Array[String]): Unit = {
println("同或运算:")
for(x <- Array(false,true)){
for(y <- Array(false,true)){
println(f"$x xnor $y = " + (x xnor y))
}
}

println()
println("异或运算:")
for(x <- Array(false,true)){
for(y <- Array(false,true)){
println(f"$x xor $y = " + (x xor y))
}
}

}

}


使用隐含类类型

/********************************************
* @author : cf
* @date   : 2014/05/12
* @brief  : 使用隐含类类型为值类添加函数
*
********************************************/

import language.implicitConversions

object Example{
implicit class BooleanImprovements(val b:Boolean) {
//同或运算
def xnor(rb:Boolean) = (b && rb) || (!b && !rb)

//异或运算
def xor(rb:Boolean) = (b && !rb) || (!b && rb)
}

def main(args: Array[String]): Unit = {
println("同或运算:")
for(x <- Array(false,true)){
for(y <- Array(false,true)){
println(f"$x xnor $y = " + (x xnor y))
}
}

println()
println("异或运算:")
for(x <- Array(false,true)){
for(y <- Array(false,true)){
println(f"$x xor $y = " + (x xor y))
}
}

}

}


运行结果

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐