【scala系列4】使用富包装器或隐含类类型为值类添加函数
2014-05-12 13:39
183 查看
本文使用富包装器以及隐含类类型两种方法为基本类型添加函数。
使Boolean类型支持 a xor b 和
a xnor b 的操作(xor运算也可以直接用符号^)。
由于学scala不久,所以代码写的不好,有优化的地方还望指教。
使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)) } } } }
运行结果
相关文章推荐
- [Scala函数特性系列]——使用命名参数
- [Scala函数特性系列]——使用可变参数
- Linux Shell脚本系列教程(四):使用函数添加环境变量
- 鸡啄米vc++2010系列46(Ribbon界面开发:使用更多控件并为控件添加消息处理函数)
- Linux Shell脚本系列教程(四):使用函数添加环境变量
- 鸡啄米vc++2010系列46(Ribbon界面开发:使用更多控件并为控件添加消息处理函数)
- sql server 创建table表 及添加各种约束 查看约束 删除约束 新增表的字段 规则及规则使用方法及应用到表中 时间函数的类型
- 字符串中使用较多的函数和字符串与日期类型转换
- 使用sql更改表的列的数据类型和添加新列和约束
- PHP strip_tags使用时需要使用的HTML系列函数
- 在VS 2010中如何使用Class Wizard添加消息处理函数
- Microsoft .NET Framework 2.0 Application Development Foundation 翻译系列6(第一章:第二课公共引用类型的使用②)
- Qt Linux 下开发的一些类和功能函数的使用(添加中)
- 快学Scala-变量声明、常用类型、条件与块表达式、循环、方法函数的调用
- iOS 8 Auto Layout界面自动布局系列2-使用Xcode的Interface Builder添加布局约束
- Scala 函数响应式编程: 静态类型 (Static Types)
- CArray使用简单介绍,如何添加标准数据类型,和自定义的类,或者自定义数据类型
- Swift新手教程系列5-函数+selector在swift中的使用方法
- 使用VAssistX为VS2008 c++代码添加函数头注释
- 使用SetupDi系列函数