1.while循环必须有一个循环变量,而且这个循环变量必须是在外部定义的
// 1.while循环必须有一个循环变量,而且这个循环变量必须是在外部定义的
var n =10
// 常规的while循环
while (n >= 1){
println(n)
n -= 1
}
以下结果皆如下![](https://i-blog.csdnimg.cn/blog_migrate/9dff968f03a4c74b14e034a41f38b9d1.png)
2.用闭包实现一个函数,将代码块作为参数传入,递归调用
//2.用闭包实现一个函数,将代码块作为参数传入,递归调用
def myWhile(coodition: =>Boolean):(=>Unit)=>Unit={
//内层函数需要通过递归调用,参数就是循环体
def doloop(op: =>Unit):Unit ={
if (coodition){
op
myWhile(coodition)(op)
}
}
doloop _
}
println("++++++++++++++++++++++++++++++++")
n =10
myWhile(n>=1){
println(n)
n-=1
}
3.用匿名函数实现
//3.用匿名函数实现
def myWhile2(condition: =>Boolean):(=>Unit)=>Unit ={
//内层函数需要递归调用,参数就是循环体
def doloop(op: =>Unit):Unit ={
if (condition){
op
myWhile2(condition)(op)
}
}
doloop _
}
println("++++++++++++++++++++++++++++++++")
n =10
myWhile(n>=1){
println(n)
n-=1
}
// 简化后
def myWhile3(condition: =>Boolean):(=>Unit)=>Unit ={
//内层函数需要递归调用,参数就是循环体
op =>{
if (condition){
op
myWhile3(condition)(op)
}
}
}
println("++++++++++++++++++++++++++++++++")
n =10
myWhile(n>=1){
println(n)
n-=1
}
4.用柯里化实现
def myWhile4(condition: =>Boolean )(op: =>Unit):Unit ={
if (condition){
op
myWhile4(condition)(op)
}
}
println("++++++++++++++++++++++++++++++++")
n =10
myWhile(n>=1){
println(n)
n-=1
}