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函数。
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 }
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 }
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类型)
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修改的变量。
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函数;
函数返回值问题
原文:http://www.cnblogs.com/yy3b2007com/p/4968735.html