Scala【自定义while循环】

简介: 你用过自定义的while循环码?真厉害了Scala

你用过自定义的while循环码?

  • 真厉害了Scala
package com.li.chapter05
import java.util.concurrent.locks.Condition
object Test12_MyWhile {
  def main(args: Array[String]): Unit = {
    var n = 10
    // 1. 常规的while循环
    while (n >= 1){
      println(n)
      n -= 1
    }
    // 2. 用闭包实现一个函数,将代码块作为参数传入,递归调用
    def myWhile(condition: =>Boolean): (=>Unit)=>Unit = {
      // 内层函数需要递归调用,参数就是循环体
      def doLoop(op: =>Unit): Unit = {
        if (condition){
          op
          myWhile(condition)(op)
        }
      }
      doLoop _
    }
    println("=================")
    n = 10
    myWhile(n >= 1){
      println(n)
      n -= 1
    }
    // 3. 用匿名函数实现
    def myWhile2(condition: =>Boolean): (=>Unit)=>Unit = {
      // 内层函数需要递归调用,参数就是循环体
      op => {
        if (condition){
          op
          myWhile2(condition)(op)
        }
      }
    }
    println("=================")
    n = 10
    myWhile2(n >= 1){
      println(n)
      n -= 1
    }
    // 3. 用柯里化实现
    def myWhile3(condition: =>Boolean)(op: =>Unit): Unit = {
      if (condition){
        op
        myWhile3(condition)(op)
      }
    }
    println("=================")
    n = 10
    myWhile3({n >= 1})({
      println(n)
      n -= 1
    })
    //使用双参数代码块实现自定义while    
    def myWhile4(condition: =>Boolean,op: =>Unit): Unit ={
      if (condition){
        op
        myWhile4(condition,op)
      }
    }
    println("=================")
    n = 10
    myWhile4({n >= 1},{
      println(n)
      n -= 1
    })
  }
}
目录
相关文章
|
8月前
|
Java Scala C++
Scala选择和循环语法
Scala选择和循环语法
31 0
|
Java Scala
scala中怎么跳出循环
在java中跳出循环的时候,我们可以直接break就行了,但是在scala里面没有break,那怎么跳出循环呢? 直接看下面的demo: package test import scala.util.control.Breaks object ListDemo { def main(args: Array[String]): Unit = { var loop = Breaks var i = 0 loop.breakable { while (i < 10) { println(i) i += 1
|
Scala C# Java
scala 学习笔记(01) 函数定义、分支、循环、异常处理、递归
package yjmyzz import scala.io.StdIn object ScalaApp { def main(args: Array[String]) { println("please input something,press Enter t...
830 0
|
SQL 消息中间件 分布式计算
如何查看spark与hadoop、kafka、Scala、flume、hive等兼容版本【适用于任何版本】
如何查看spark与hadoop、kafka、Scala、flume、hive等兼容版本【适用于任何版本】
709 0
如何查看spark与hadoop、kafka、Scala、flume、hive等兼容版本【适用于任何版本】
|
4天前
|
SQL 存储 分布式计算
在scala中使用spark
在scala中使用spark
6 0
|
4天前
|
分布式计算 Java Scala
spark 与 scala 的对应版本查看、在idea中maven版本不要选择17,弄了好久,换成11就可以啦
spark 与 scala 的对应版本查看、.在idea中maven版本不要选择17,弄了好久,换成11就可以啦
117 2