然后是Scala中两个参数的功能
发布时间:2020-12-16 18:45:36 所属栏目:安全 来源:网络整理
导读:假设我有两个函数f和g: val f: (Int,Int) = Int = _ + _val g: Int = String = _ + "" 现在我想用它们来组合它们然后得到一个函数h val h: (Int,Int) = String = f andThen g 不幸的是它没有编译:( scala val h = (f andThen g)console error: value andThe
假设我有两个函数f和g:
val f: (Int,Int) => Int = _ + _ val g: Int => String = _ + "" 现在我想用它们来组合它们然后得到一个函数h val h: (Int,Int) => String = f andThen g 不幸的是它没有编译:( scala> val h = (f andThen g) <console> error: value andThen is not a member of (Int,Int) => Int val h = (f andThen g) 为什么不编译,如何编写f和g来获取(Int,Int)=>字符串? 解决方法
它不能编译,因为而且它是Function1的一个方法(一个参数的函数:参见
scaladoc).
函数f有两个参数,因此是Function2的一个实例(参见scaladoc). 要使其编译,您需要通过tupling将f转换为一个参数的函数: scala> val h = f.tupled andThen g h: (Int,Int) => String = <function1> 测试: scala> val t = (1,1) scala> h(t) res1: String = 2 您也可以更简单地将调用写入h,因为auto-tupling没有明确创建元组(尽管由于混淆和类型安全性丢失,自动编组有点争议): scala> h(1,1) res1: String = 2 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |