首页 > 其他 > 详细

Scala 流程空间,函数,异常处理

时间:2015-11-16 15:19:07      阅读:298      评论:0      收藏:0      [点我收藏+]
  • 1,)首先留意一下下边的代码块,他是怎么运行的,貌似在c#中他是出错的,不应该出现这样的写法的,但在scala中侧不然:
 1 package com.dt.study
 2 
 3 /**
 4  * The package path is com.dt.study.
 5  * Created by tommy duan on 2015/11/16.
 6  */
 7 object HelloScala {
 8   var line = ""
 9   do {
10     line = readLine()
11     if (!line.isEmpty) println("Read line is:"+line)
12   } while (line != "")
13 
14   def main(args: Array[String]): Unit = {
15     println("Hello Scala!!!")
16   }
17 }

运行起来后,会等待输入文字,知道输入空位置,直接走入main函数。

  • 2,)object 在scala中是一个对象,对象声明同类一样,是不需要public修饰的,默认就是public
  • 3,)scala object对象内部的函数都是静态的:访问方式为 HelloScala.

HelloScalaClass

技术分享
 1 package com.dt.study
 2 
 3 /**
 4  * The package path is com.dt.study.
 5  * Created by tommy duan on 2015/11/16.
 6  */
 7 class HelloScalaClass {
 8   def sayHello(line:String)={
 9     println(line)
10   }
11 }
View Code

HelloScalaObject

技术分享
 1 package com.dt.study
 2 
 3 /**
 4  * The package path is com.dt.study.
 5  * Created by tommy duan on 2015/11/16.
 6  */
 7 object HelloScalaObject {
 8   var line=""
 9   def sayHello(line:String):Unit={
10     println(line)
11   }
12 }
View Code

class 与 object调用

 1 package com.dt.study
 2 
 3 /**
 4  * The package path is com.dt.study.
 5  * Created by tommy duan on 2015/11/16.
 6  */
 7 object HelloScala {
 8   def main(args: Array[String]): Unit = {
 9     println("Hello Scala!!!")
10     
11     HelloScalaObject.sayHello("Hello scala object")
12     var scalaCls=new HelloScalaClass();
13     scalaCls.sayHello("Hello scala class") 
14   }
15 }

同样object对象内部的属性对象也是静态的,且内部字段默认scala会给其实现get.set函数(但不考虑var类型,private类型)

  • 4,)val 与var类型
 1 package com.dt.study
 2 
 3 /**
 4  * The package path is com.dt.study.
 5  * Created by tommy duan on 2015/11/16.
 6  */
 7 object HelloScala {
 8   def main(args: Array[String]): Unit = {
 9     println("Hello Scala!!!")
10 
11     var line=""
12     line="hello"
13     println(line)
14 
15     val lineVal="hello"
16     println(lineVal)
17     lineVal="test"
18   }
19 }

在idea编译器中17 lineVal="test" 会报错误,编译不通过。

原因,val是不可以变类型,一旦设置了值后,就不可以更改变量值;而var是可变变量,可以改变值。val像是java中被final修改的变量。

  • scala类和对象中字段的隐藏get set函数实现
 1 package com.dt.study
 2 
 3 /**
 4  * The package path is com.dt.study.
 5  * Created by tommy duan on 2015/11/16.
 6  */
 7 object HelloScala {
 8   def main(args: Array[String]): Unit = {
 9     println("Hello Scala!!!")
10     
11     println(HelloScalaObject.line)    
12     HelloScalaObject.line="sss"
13     
14   }
15 }

请留意:

11     println(HelloScalaObject.line)    
12     HelloScalaObject.line="sss"

这两行代码,第11行代码隐含了几层含义:

1,)line是一个public变量;

2,)调用了HelloScalaObject对象的隐藏line var的get函数;

第12行除了上边1,)外还有一层含义:调用了HelloScalaObject对象的隐藏line var的set函数;

函数返回值问题

 

Scala 流程空间,函数,异常处理

原文:http://www.cnblogs.com/yy3b2007com/p/4968735.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!