初次 接触到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))
scala方法的定义就介绍到这里,下一章我们介绍下数组的初始化以及遍历的方法