> 文章列表 > scala 柯里化+传名参数+递归 实现while关键字功能

scala 柯里化+传名参数+递归 实现while关键字功能

scala 柯里化+传名参数+递归 实现while关键字功能

目录

代码实现

object Lambda {def main(args: Array[String]): Unit = {def myWhile(condition: => Boolean)(op: => Unit): Unit = {if (condition) {opmyWhile(condition)(op)}}var a = 1myWhile(a <= 4) {println(a)a += 1}}
}

解读

首先我们定义一个myWhile函数,它的两个参数分别是返回值为Boolean类型、Unit类型(无返回值)的代码块,该函数没有返回值
如果传入的第一个代码块condition的返回值为true则执行传入的第二个代码块op,接着再次以参数condition、op执行myWhile函数(递归),直到多次op操作后condition不再为true,终止循环,否则死循环
scala 柯里化+传名参数+递归 实现while关键字功能