// 自定义实现while循环 利用 闭包 抽象控制 尾递归 匿名函数 柯里化
import scala.annotation.tailrec
object MyWhile {
def main(args: Array[String]): Unit = {
// 用闭包时间while函数,将代码块作为参数传入,递归调用
def myWhile(condition: =>Boolean): (=>Unit) =>Unit = {
// 内层函数需要递归调用,参数就是循环体
@tailrec
def doLoop(op: =>Unit): Unit = {
if (condition){
op
// 尾递归
doLoop(op)
// myWhile(condition)(op)
}
}
doLoop
}
var n = 10
myWhile(n >= 1){
println(n)
n -= 1
}
// 匿名函数
def myWhile2(condition: =>Boolean): (=>Unit) =>Unit = {
op => {
if (condition){
op
myWhile2(condition)(op)
}
}
}
// 柯里化
def myWhile3(condition: =>Boolean)(op: =>Unit): Unit = {
if (condition) {
op
myWhile3(condition)(op)
}
}
}
}
Scala自定义While循环
最新推荐文章于 2024-09-16 04:11:33 发布