加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

scala,传递一个操作符作为函数的参数

发布时间:2020-12-16 19:07:06 所属栏目:安全 来源:网络整理
导读:我有这个代码: for( i - 0 to 8){ ((numbers(i) - i)/3).abs + ((numbers(i) - i)%3).abs} 正如标题所说,我想做的是这样的事情 for( i - 0 to 8){ by3(numbers(i),i,/) + by3(numbers(i),%)}def by3(a: Int,b: Int,op: Int = Int) = ((a - b) op 3).abs 并
我有这个代码:

for( i <- 0 to 8){
  ((numbers(i) - i)/3).abs + ((numbers(i) - i)%3).abs
}

正如标题所说,我想做的是这样的事情

for( i <- 0 to 8){
  by3(numbers(i),i,/) + by3(numbers(i),%)
}

def by3(a: Int,b: Int,op: Int => Int) = ((a - b) op 3).abs

并且也可能使用部分应用的功能..但是到现在为止可以实现?怎么样?

解决方法

要摆脱下划线,您需要将函数定义为值.

val / = (a:Int,b: Int) => a / b
val % = (a:Int,b: Int) => a % b

def by3(a: Int,fn: (Int,Int) => Int): Int = fn(a - b,3).abs

(0 to 8).foreach(i => by3(numbers(i),%))

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读