【scala初学】scala 语法 for

简介:

上一章我写了scala基本类型,并且在开头弄个“黑暗料理”吓唬大家。。。这一章写scala的循环 for

 

首先定义一个方法,然后在main方法中运行

1
2
3
4
5
6
7
def  for _ 1 = {
var  greeting  =  "x"
for  (i <-  0  until  10 ) {
println((greeting + =  i))  //无任何返回值
println(greeting)
}
}

如果是java语言,我们通常这样

1
2
3
4
5
String greeting= "x" ;
for ( int  i= 0 ;i< 10 ;i++)
{
System.out.prinln(greeting+=i)
}

再看看ruby

1
2
3
for  in  0 ..(args.size -  1 )
greeting += args[i] +  " "
end

继续说,运行测试,在main方法中测试for_1方法

1
2
3
def main(args:  Array [ String ]) {
for_1
}

 

到这里我觉得各位也能发现一些问题(从java程序员角度),我简单解释下:

1. 方法的定义

def开头 有参数加括号,有返回值,需要标注返回类型,如

1
2
3
4
5
def for_1_2(x:Int):Int={
var  m =  1
println(x)
m
}

2.  关于特殊符号 <-

1
2
1 . keyword
2 . Used on  for -comprehensions, to separate pattern from generator

以上是对符号<-  的解释,意思就是 

a. 他是关键字

b. 他用于for循环逻辑,用于遍历

 

下面,我们讲看到for循环的几个变种, 也可能是在spark源码中遇到次数较多的

第一次变种:

1
2
3
4
5
6
def  for 2 = {
val  range  =  0 .until( 10 )
for  (i <- range) {
println(i)
}
}

第二次变种,加上个参数:

1
2
3
4
5
6
7
8
9
10
11
12
13
def  for 3 (args :  Array[String]){
var  greeting  =  "" ;
args.foreach { arg  = >
greeting + =  (arg +  " " )
println(greeting);
}
//arg是临时变量
var  range  =  0 .until( 10 )
range.foreach { arg  = >
greeting + =  (arg +  " " )
println(greeting);
}
}

第二个特殊符号出现 “=>” 在最后解释吧

第三次变种,为了下一次变种做铺垫,我去掉了函数定义:

1
2
3
4
5
var  greeting  =  "" ;
//在foreach 后面加上了括号
args.foreach ({ arg  = >
greeting + =  (arg +  " " )
})

第四次变种:

1
args.foreach(arg  = > greeting + =  (arg +  " " ))

最后:

回顾这篇文章 几个比较特殊点

1. unitl

scala.runtime 包下面的RichInt until 方法  用于for循环 举例

1
2
3
for  (i <-  0  until  10 ) {}
//或者
var  range  =  0 .until( 10 )

2. <-

a. 关键字

b. 用于遍历

3. =>

1
2
1 . keyword
2 . Used  for  function  types,  function  literals and  import  renaming

 a. 关键字

 b. 用户 for函数的类型, 函数文本 和 导入更名。在for里作用同符号 <- ,导入更名。

4. 函数的定义

1
2
3
4
5
def  for _ 6 (x : Int) : String = {
var  =  1
println(x)
m+ ""
}

m+"" 是返回的String

for 语法大概就这样,入门够用了










本文转自 wws5201985 51CTO博客,原文链接:http://blog.51cto.com/yjplxq/1412530,如需转载请自行联系原作者
目录
相关文章
|
6月前
|
大数据 Scala
大数据生态思维导图____2021最新最全Scala语法思维导图!(待更新)
大数据生态思维导图____2021最新最全Scala语法思维导图!(待更新)
54 0
|
Java Scala C++
Scala选择和循环语法
Scala选择和循环语法
54 0
|
分布式计算 Java Scala
一天学完spark的Scala基础语法教程十二、异常处理(idea版本)
一天学完spark的Scala基础语法教程十二、异常处理(idea版本)
200 0
一天学完spark的Scala基础语法教程十二、异常处理(idea版本)
|
NoSQL Java Scala
Swift和Scala语法上的诸多相似之处
国外开发者最近发现,WWDC2014上苹果发布的新语言Swift,和古老的Scala语言在语法上存在众多的相似之处。
243 0
Swift和Scala语法上的诸多相似之处
|
Java Scala
Scala语法详解:特质 (Traits)
Scala语法详解:特质 (Traits)
130 0
|
Java 程序员 Scala
Java 程序员必备scala基础语法
Java 程序员必备scala基础语法
80 0