设为首页 加入收藏

TOP

scala学习手记2 - scala中的循环
2017-10-10 12:12:56 】 浏览:2539
Tags:scala 学习 手记 循环

先来看一段Java中的循环:

for (int i = 1; i < 4; i++) {
      System.out.print(i + ",");
}

毫无疑问,scala可以让这个循环更加简洁。根据上一节中的内容,没有必要显示指定变量i的类型,我们甚至不需要声明这个变量。其次输出的语句也可以更加简洁一些,在scala中可以直接使用println()这个方法输出字符串。最后scala的循环结构也是非常的轻量级。好了,可以看一下代码了:

for (i <- 1 to 3) {
    print(i + ",")
}

在上面代码中的循环结构里,箭头(<-)左侧是一个val(注意不是var)变量,右侧是一个生成器表达式。和java中的循环不同,在这里的每次循环中都会创建一个新的val变量i(而非是给i赋值),用生成器表达式产生出来的连续值进行初始化。

生成器表达式“1 to 3”生成的连续值包含了下界[1]和上界[3],如果用until方法替换to方法后,就可以排除上界。

to和until都是scala的RichInt类的方法,调用1 to 3等价于1.to(3),但是前者更加优雅。在scala中,如果方法有0或1个参数,点和括号是可以丢掉的。如果方法的参数多于一个,那么就必须保留括号,但是点仍是可选的。再举一个在java中非常常见的表达式为例:1 + 2在scala中实际上就是1.+(2),+也是一个方法而非是简单的符号。

我们已经知道1 to 3返回的使一个连续值(Range),那么就可以考虑使用Range的foreach方法来实现循环。代码如下:

(1 to 3).foreach(i => print(i + ","))

foreach是Range类的一个方法,这方法以一个函数值作为参数。所以要在括号里提供一段函数代码接受一个实参。在这个例子里,实参就是i。箭头“=>”的作用是将左边的参数列表和右侧函数实现分割开来。

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Scala学习手记1 - 快速体验 下一篇scala学习手记3 - var和val

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目