初次 接触到scala发现scala定义方法的方式和java有很大的区别
1.下面是我写的一个测试scala方法定义的demo.
package com.scala.demo
object FunctionDemo {
//定义方法1
def function1()
{
println("function1 run!")
}
// 定义方法2,效果和function1是一样的,可见Unit的作用void
def function2():Unit=
{
println("function2 run!")
}
//定义方法3
def fcunction3(a:Int,b:Int):Int ={ //=不可去掉
a+b
}
/**
* function4主要是测试=是否什么时候是必须的
*/
def function4()=
{
println("function4 run!")
}
def function5():Int=
{
2+5
}
def function6(a:Int,b:Int)=
{
val s=a+b
println("function6:"+s);
}
//定义一个参数,觉得是static 类型的
val staticfunction=
{
println("staticfunction run!")
}
val value1=
{
1+2+3
}
val value2=
{
val a=1+2+3
val b=a+2
}
val value3=2+3+4
def main(args:Array[String])
{
function1
function2
println("function3:"+ fcunction3(1,2))
function4
println("function5:"+function5)
val f1=function6 _
f1(1,2)
staticfunction //发现无法运行,因为staticfunction是一个参数
println("staticfunction:"+staticfunction) //输出:(),相对于null
println(value1+";"+value2+";"+value3) //value2=null
}
}
运行的结果为:
staticfunction run!
function1 run!
function2 run!
function3:3
function4 run!
function5:7
function6:3
staticfunction:()
6;();9
通过上面的输出结果可以发现:
1.把方法赋值给一个参数的话,这个方法会在参数编译的时候就执行,相当于该参数是一个static类型的.当然scala里面是没有static类型的.
2.当有返回值的时候,定义的时候"="是不能省略的,没有返回值的时候,无论有没有参数"="都是可以省略的,例如function6,然而function6的调用方式应该怎么写,我只想到了如上写法,求大神指点
3.初始化参数的时候可以加{}
匿名方法的定义方式
例如:args.
args.foreach((arg: String) => println(arg))
其中args是数组
scala方法的定义就介绍到这里,下一章我们介绍下数组的初始化以及遍历的方法