美文网首页
Scala - Loops

Scala - Loops

作者: pangolulu | 来源:发表于2016-04-17 17:31 被阅读38次

下面给出一个Scala中while循环的例子:

def power (x: Double, exp: Int): Double = {
  var r = 1.0
  var i = exp
  while (i > 0) { r = r * x; i = i - 1 }
  r
}

虽然在实际中不建议这么来写。
while在Scala中是一个关键字,但是我们可不可以用一个函数来定义while呢?参考如下:

def WHILE(condition: => Boolean)(command: => Unit): Unit =
  if (condition) {
    command
    WHILE(condition)(command)
  }
  else ()

这里需要注意:

  1. conditioncommand需要按照call-by-name的方式来传,这样才能在每一次迭代中都能进行evaluate。
  2. WHILE函数是尾递归的,所以调用WHILE只需要使用常量的栈大小。

对于for循环,Scala可以这么写:

for (i <- 1 until 3) { System.out.print(i + " ") }

for循环的翻类似于对for-expression的翻译,但是使用的是foreach函数,而不是mapflatMap
在每个collection中都定义了一个foreach函数:

def foreach(f: T => Unit): Unit =
  // apply ‘f‘ to each element of the collection

那么,对于如下的for循环要怎么翻译呢?

for (i <- 1 until 3; j <- "abc") println(i + " " + j)

通过foreach函数,可以展开为:

(1 until 3) foreach (i => "abc" foreach (j => println(i + " " + j)))

相关文章

  • Scala - Loops

    下面给出一个Scala中while循环的例子: 虽然在实际中不建议这么来写。while在Scala中是一个关键字,...

  • 100 Days of Swift - 04 Day: Swif

    100 Days of Swift - 04 Day: loops, loops, and more loops ...

  • ITEM 58: 先考虑使用 for-each ,再考虑 for

    ITEM 58: PREFER FOR-EACH LOOPS TO TRADITIONAL FOR LOOPS  ...

  • Run Loops记录

    Run Loops Run Loops描述(官方文档)Run Loops(运行循环)是与线程相关的基础架构的一部分...

  • python - loops

    loops and iteration py4E022-025 While while loops are cal...

  • RunLoop理解

    What's Run Loops? Why Run Loops? 命令行式执行 Event驱动

  • coursera, week3

    Parallel Loops

  • Run Loops

    写在前面 阅读 Apple Deleloper Run Loops 的笔记。 简介 Run Loops 是和线程息...

  • Loops

      C provides several looping constructs---namely. do-whil...

  • Swift - Control Flow

    For-In Loops 忽略一些值 stride While Loops - 适用于不清楚循环次数 while:...

网友评论

      本文标题:Scala - Loops

      本文链接:https://www.haomeiwen.com/subject/webolttx.html