云计算中scala方法的定义方式解析
程序员文章站
2022-06-21 21:57:37
初次 接触到scala发现scala定义方法的方式和java有很大的区别
1.下面是我写的一个测试scala方法定义的demo.
package?com.scala.demo??
?...
初次 接触到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方法的定义就介绍到这里,下一章我们介绍下数组的初始化以及遍历的方法。
- args.foreach((arg:?String)?=>?println(arg))??其中args是数组