Scala--隐式参数
来源:互联网 发布:生物统计分析软件 编辑:程序博客网 时间:2024/05/20 07:51
A method with implicit parameters can be applied to arguments just like a normal method. In this case the implicit label has no effect. However, if such a method misses arguments for its implicit parameters, such arguments will be automatically provided.
如果有参数, 那么会自动使用, 如果没有, 你也可以显示地传递
//通过输入购物金额, 结合当前域中的隐式参数来计算税费def calcTax(amount:Float)(implicit rate: Float): Float = { amount * rate}//创建一个独立的域测试{ //1,显式输入, 不使用隐式参数 calcTax(3000)(0.08F)}{ //2,使用隐式参数, 参数的作用域只是在当前大括号中有效 implicit val rate = 0.04F calcTax(3000)}
使用作用域来限制隐式参数在某一个区域中, 在需要的时候, 直接引入
//通过输入购物金额, 结合当前域中的隐式参数来计算税费def calcTax(amount:Float)(implicit rate: Float): Float = { amount * rate}//当计算简单的消费税时候, 引入该变量object SimpleStateSalesTax { implicit val rate: Float = 0.08F}//在一个单独的域中测试{ //引入变量, 一个域中仅能有一个变量 import SimpleStateSalesTax.rate val amount = 3000F println(s"Tax on $amount = ${calcTax(amount)}")}
//通过输入购物金额, 结合当前域中的隐式参数来计算税费def calcTax(amount:Float)(implicit rate: Float): Float = { amount * rate}//当计算简单的消费税时候, 引入该变量object SimpleStateSalesTax { implicit val rate: Float = 0.08F}//在一个单独的域中测试{ //引入变量, 一个域中仅能有一个变量 import SimpleStateSalesTax.rate val amount = 3000F println(s"Tax on $amount = ${calcTax(amount)}")}/*在休假的时候免税, 在不同的地方收不同的附加税*///复杂税费的数据保存类, 使用case类case class ComplicatedSalesTaxData( baseRate: Float, //基础税率 isTaxHoliday: Boolean, //是否是免税日 storeId: Int) //店铺的id, 当地的附加税object ComplicatedSalesTax { //根据店铺号码计算附加税率 private def extraTaxRateForStore(id:Int):Float = { if(id<1000) 0.1F //附加税率为0.1 else 0.15F //附加税率为0.15 } //根据一个纳税数据体, 计算税率 implicit def rate(implicit cstd: ComplicatedSalesTaxData):Float = { //免税期 if(cstd.isTaxHoliday) 0.0F //基础税率, 加上附加税率 else cstd.baseRate + extraTaxRateForStore(cstd.storeId) }}{ import ComplicatedSalesTax.rate implicit val myStore = ComplicatedSalesTaxData(0.06F, false, 1200) val amount = 3000 calcTax(amount)}
阅读全文
0 0
- Scala--隐式参数
- scala隐式参数(implicit)
- scala 隐式转换参数
- scala隐式参数(implicit)
- scala隐式参数(implicit)
- scala入门-10 隐式转换、隐式参数、隐式类
- Scala中的隐式转换、隐式参数、隐式类
- scala总结(4) -- 隐式转换以及隐式参数
- scala学习之:隐式转换与隐式参数
- scala中的隐式转换、隐式参数和隐式类
- Scala 隐式类型之隐式参数
- 【Scala类型系统】隐式转换与隐式参数
- Scala隐式转换之隐式参数(1)
- Scala中的隐式转换、隐式参数、隐式类
- Scala入门之隐式转换与隐式参数
- scala进阶18-隐式转换-隐式参数
- scala进阶19-隐式参数+隐式转换
- scala implicit隐式转化与隐式参数
- 构造一个单词查找树,支持以下两个操作的数据结构: 添加和搜索,只包含字母a-z或.。
- 快捷切换hosts的小工具:SwitchHosts
- Jmeter和Ant的html报告优化及Dashboard Report介绍
- 程序猿之歌:一人我编程累
- 关于Error:null value in entry: aaptFriendlyManifestOutputFile=null
- Scala--隐式参数
- change color 001
- 【bzoj 1588】营业额统计(链表)
- Kaggle sea-lion总结
- PHP基础知识点
- IO流
- HashMap源码分析
- 【java基础】20.网络编程2
- Elasticsearch顶尖高手系列-高手进阶篇