scala - Scala 函数和按名称调用的问题
问题描述
我正在尝试在此函数中循环使用按名称调用参数的第二个参数(exp)。前 3 个参数是索引、停止循环的布尔值和增量函数。当我尝试循环“hello world”10 次时,我得到一个带有 10 '()' 的输出,如测试代码中所示。我可以就这里的问题寻求帮助吗?谢谢
def forLoop(ival: => Int, f: (Int) => Boolean, g: (Int)=>Int)(exp: => Unit): Unit = {
if(f(ival)==false)
return
else {
println(exp)
forLoop(g(ival),f,g)(exp)
}
}
def f(x: Int): Boolean = { x<10 }
def g(y: Int): Int = { y+1 }
val exp: Unit = "Hello World"
forLoop(0,f,g)("Hello World")
解决方案
我认为这符合您的要求。
def forLoop(ival: => Int, f: =>Int => Boolean, g: =>Int=>Int
)(exp: => Unit): Unit =
if (f(ival)) {
exp
forLoop(g(ival),f,g)(exp)
}
def f(x: Int): Boolean = x<10
def g(y: Int): Int = y+1
def exp: Unit = println("Hello World")
forLoop(0,f,g)(exp)
推荐阅读
- python - 带有postgresql的django rest框架中的时区感知日期问题
- python - 如何在我的 csv 文件中保留 unicode 字符代码?
- java - (Android) 使用 HttpUrlConnection 编写 curl POST 命令
- r - 根据条件将值分配给数据框中的特定行和多列
- dictionary - Octave:创建和初始化结构的简洁方法
- asp.net - 单元测试失败时如何通过dockerfile停止构建(Dockerfile + .NET Framework + Nunit Test + Docker Window Container
- javascript - 保存状态中的Div内容
- javascript - 如何在用户输入上设置计时器?
- sql - BIGQUERY - LEFT OUTER JOIN 不能在没有连接两侧的字段相等的条件下使用
- apache-kafka - 在 Kafka-Python 中流式传输 CSV 数据