厉害了我的值
scala中用val定义的东西即为常量,是不可修改的,scala把它称之为值,用var定义的东西即为变量,是可修改的。当然val和var都是用来存储数据的,scala称他们为“域”
//厉害了我的值
val name = "nodeBill"
println("我的名字是"+name)
name = "1024" //看这里,出错了
/*代码执行后会提示: error: reassignment to val
错误:对val“常量类型的值”进行重复赋值
原因是上述代码块最后一行重新对常量name进行了赋值*/
class MobilePhone(var color:String = "蓝色",val price:Int = 1024){
def show():Unit = println("这是一款"+ color +"、价值" + price +"元的移动智能终端" )
}
val myPhone = new MobilePhone
myPhone.color = "银灰色"
myPhone.show()
myPhone.price = 2048 //看这里,出错啦
myPhone.show()
/*代码执行后会提示: error: reassignment to val
错误:对val“常量类型的值”进行重复赋值
原因是上述代码块倒数第二行重新对常量price进行了赋值*/
case class Computer(brand:String,RAM:Int){
def this() = {
this("DELL",4)
}
def display():Unit = println("这是一台内存大小为"+ RAM +"GB的"+brand+"电脑")
}
val myComputer = new Computer
myComputer.display()
/*上述代码块能够正确执行,需要强调的是case类默认将
类参数设置为常量即case class Computer(val brand:String,val RAM:Int)*/
“其实什么都没有”Unit
如果一个常量、变量、函数并不返回结果,那么就可以把它声明为Unit类型。
//“其实什么都没有”Unit
var name = println("nodeBill")
/*直接在REPL模式下执行该行代码会出现
nodeBill
name: Unit = ()
结果,表示name这个变量里面什么都没有*/
println(name)
/*当尝试输出name时,你看到如下结果:
()
只能看到一对括号。*/
var name:Unit = ()
var age :Int = 20
/*对比可以体会到Unit型的变量里面似乎
是一对小括号,其实只要变量、常量的值
是a pure expression(纯表达式),那么
该变量或常量就是Unit型,对于Unit型的方法也是同理*/