变量定义:
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