您的位置:首页 > 其它

scala学习笔记3

2015-09-30 09:20 295 查看


变量定义:

val:类似java中final类型的变量
1,基本格式:val 变量名:变量类型 = 值
2,其中有时变量类型可以省略,可以自动识别
3,变量不能赋值,修改

var :等同于java中的非final型变量
val msg: java.lang.String = "Hello World String"
println("msg: " +msg)

var msgVar: java.lang.String = "Hello World String"
println("msgvar: " +msgVar)
msgVar = "Hello World String  new value"
println("msgvar:" + msgVar)


结果应该为
msg: Hello World String
msgvar: Hello World String
msgvar:Hello World String  new value


函数定义

函数格式:


def 函数名(参数列表,...):返回结果类型={},下面给出一个max函数

def max(a: Int,b: Int):Int ={
if(a > b)
a
else
b
}

var maxValue = max(6,10)
println("max(6, 10) the max maxValue is :" + maxValue )
println("max(6, 10) the max is :" + max(6,10) )


返回结果是较大的值
max(6, 10) the max maxValue is :10
max(6, 10) the max is :10


1,有时函数必须制定返回结果类型,如函数时递归,就必须明确制定返回结果类型


2,在max这里例子中及时不写返回结果,编译器也能推断,如实这个函数就 编程如下的样子,作用功能都没有变化

def max2(a: Int,b: Int)={
if(a > b)
a
else
b
}


3,如果函数仅 一个语句,连花括号都可以不写。如是max函数就成了这样,作用功能仍然没有变化

def max3(a: Int,b: Int)=if(a > b) a else b


些到这里的时候老子真想来一句what a fuck function ,碎了一地啊。

接下来,是一个既不传参,也不返回有用结果的函数的定义,据说解析器返回


greeting():Unit,其中Unit值得时greetin的返回类型,类似于Java的void类型,而且Java中的void类型会被映射成Unit

def greeting()=println{"no args no return?"}
greeting()
greeting


but调用,卧槽,这都可以啊,结果两个都返回
no args no return?
no args no return?


while循环

Scala中,i++或者++i都不能其作用,只能使用i=i+1
var i = 0;
while(i <= 5){
println("i is : " +i);
i = i + 1
}


foreach与函数字面量

函数字面量格式:参数列表 => 函数体

(x: Int, y:Int) => x + y

下面结果都是一样,
args.foreach(arg => println(arg))
args.foreach((arg: String) => println(arg))
args.foreach(println)


for循环

for循环中是val类型,因此在for表达式中不能重新对其赋值, <-可以理解为其中的意思,

for(arg <- args) 对于args中的arg, 纳尼?怎么感觉是Java中foreach中的in
for(arg <- args){
//arg = arg + "new value" //resi
println("for(arg <- args) now arg is val :"+arg)
}


args 输入 args for main,则输出结果:
for(arg <- args) now arg is val :args
for(arg <- args) now arg is val :for
for(arg <- args) now arg is val :main
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: