scala(5)-scala方法的定义方式

来源:互联网 发布:端口占用解决方法 编辑:程序博客网 时间:2024/06/06 02:33
转载:http://blog.csdn.net/y3wegy/article/details/8025380

初次 接触到Scala发现scala定义方法的方式和Java有很大的区别

1.下面是我写的一个测试scala方法定义的demo.

[java] view plain copy
 print?
  1. package com.scala.demo  
  2.   
  3.   
  4. object FunctionDemo {  
  5.    //定义方法1  
  6.   def function1()  
  7.   {  
  8.     println("function1 run!")  
  9.   }  
  10.    // 定义方法2,效果和function1是一样的,可见Unit的作用void  
  11.   def function2():Unit=  
  12.   {  
  13.     println("function2 run!")  
  14.   }  
  15.    //定义方法3  
  16.   def fcunction3(a:Int,b:Int):Int ={  //=不可去掉  
  17.     a+b  
  18.   }  
  19.   /** 
  20.    * function4主要是测试=是否什么时候是必须的 
  21.    */  
  22.   def function4()=  
  23.   {  
  24.     println("function4 run!")  
  25.   }  
  26.   def function5():Int=  
  27.   {  
  28.     2+5  
  29.   }  
  30.   def function6(a:Int,b:Int)=  
  31.   {  
  32.     val s=a+b  
  33.     println("function6:"+s);  
  34.   }  
  35.   //定义一个参数,觉得是static 类型的  
  36.   val staticfunction=    
  37.   {  
  38.     println("staticfunction run!")  
  39.   }  
  40.   val value1=  
  41.   {  
  42.     1+2+3  
  43.   }  
  44.   val value2=  
  45.   {  
  46.     val a=1+2+3  
  47.     val b=a+2  
  48.   }  
  49.   val value3=2+3+4  
  50.     
  51.   def main(args:Array[String])  
  52.   {  
  53.    function1  
  54.    function2  
  55.    println("function3:"+ fcunction3(1,2))  
  56.    function4  
  57.    println("function5:"+function5)  
  58.    val f1=function6 _  
  59.    f1(1,2)  
  60.    staticfunction  //发现无法运行,因为staticfunction是一个参数  
  61.    println("staticfunction:"+staticfunction)  //输出:(),相对于null  
  62.    println(value1+";"+value2+";"+value3) //value2=null  
  63.   }  
  64. }  
运行的结果为:

[java] view plain copy
 print?
  1. staticfunction run!  
  2. function1 run!  
  3. function2 run!  
  4. function3:3  
  5. function4 run!  
  6. function5:7  
  7. function6:3  
  8. staticfunction:()  
  9. 6;();9  

通过上面的输出结果可以发现:

1.把方法赋值给一个参数的话,这个方法会在参数编译的时候就执行,相当于该参数是一个static类型的.当然scala里面是没有static类型的.

2.当有返回值的时候,定义的时候"="是不能省略的,没有返回值的时候,无论有没有参数"="都是可以省略的,例如function6,然而function6的调用方式应该怎么写,我只想到了如上写法,求大神指点

3.初始化参数的时候可以加{}


匿名方法的定义方式

匿名方法

例如:args.

[java] view plain copy
 print?
  1. args.foreach((arg: String) => println(arg))  
其中args是数组

scala方法的定义就介绍到这里,下一章我们介绍下数组的初始化以及遍历的方法


0 0
原创粉丝点击