scala入门之变量定义
博客专区 > 柳哥 的博客 > 博客详情
scala入门之变量定义
柳哥 发表于4年前
scala入门之变量定义
  • 发表于 4年前
  • 阅读 5233
  • 收藏 1
  • 点赞 0
  • 评论 0

腾讯云 新注册用户 域名抢购1元起>>>   

scala有两种变量,valvarval类似于Java里的final变量(字节码反编译成Java,其实就是final的变量)。一旦初始化了,val就不能再被赋值。相反,var如同Java里面的非final变量,可以在它的生命周期中被多次赋值。下面演示如何定义val变量:


这个语句引入了msg作为字符串“hello,world!”的名字。它的类型是:java.lang.String,因为scala的字符串是由Java的String类实现的
如果曾经声明过Java变量,你会发现一个很显著的差别:无论是java.lang.String还是String都没有出现在对val变量的定义中。这个例子演示了被称为类型推断(type inference)的能力,它能让scala自动理解你省略了的类型。这里,你用字符串字面量初始化msg,因此scala推断msg的类型是String。对于可以由Scala解释器(或编译器)自动推断类型的情况,就没有必要非得写出类型标注不可。当然这也并不绝对,你可以根据自己的想法写明定义的类型,而且或许某些时候就应该这么做。写明类型标注不但可以确保scala编译器使用你想要用的类型,还有助于之后代码的阅读。Java的变量类型写在名称之前,相反,scala的变量类型写在其名称之后,用冒号分隔。如:

因为在scala程序里java.lang.*类型的简化名也是可见的,所以也可以写成如上例中msg3定义的那样。
由于msg,msg2,msg3是val类型变量,因此唯一不能做的就是再给它赋值。如果需要的是可以被重新赋值的变量,你应该使用var,如下:

想在解释器中跨行输入语句的话,只要不是在字符串、关键字等语句的中间进行换行,解释器将会在下一行回应一个竖线。如:

如果你发现了一些错误而解释器仍在等着更多的输入,你可以通过按两次回车键取消掉。


标签: scala
共有 人打赏支持
粉丝 200
博文 394
码字总数 347782
×
柳哥
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: