Scala学习笔记(四) - 变量,常量,函数及类的定义
来源:互联网 发布:看漫画学日语知乎 编辑:程序博客网 时间:2024/04/27 03:12
Scala的语言相对来说还是比较复杂的,所以我打算将Scala拆分成两部分来说,第一部分是传统的C类语言的结构,类,函数变量,控制语句,第二部分是Scala与其他C类语言不通的地方及特点,这样的好处是可以让大家迅速了解Scala的基本操作,但是坏处是大家可能忽视掉后面的函数式的思想,纠结啊
关于类,字段和方法的定义,其实基本上与Java相似,但是却也有着一些区别。
类:
Scala中的类依然是使用class关键字,定义一个类与Java,C#没什么太大的区别,例如:
- class Class1{
- // 一些东西
- }
与其他语言不同的是,Scala中,默认的访问符是 public,即如果你不明确的写明private或其他访问符,则类里的成员默认都是可以公开访问的。
同时Scala中没有static的类,但是他有一种类似的伴生对象,稍后会介绍。
字段:
字段/变量的定义Scala中使用 var/val 变量/不变量名称 : 类型的方式进行定义,例如:
- var index1 : Int = 1
- val index2 : Int = 1
其中var 与 val 的区别在于,var 是变量,以后的值还可以改变, val的值只能在声明的时候赋值,但是val不是常量,只能说是不变量或只读变量,与C#中的readonly的变量有点相似,例如:
- index1 = 2 // OK
- index2 = 2 // Error 编译错误
大家肯定会觉得这种 var/val 名称 : 类型的声明方式太过于繁琐了,嗯,Scala作者也想到了,所以你在声明字段的时候,可以使用编译器自动推断类型,即不用写 : 类型,例如:
- var index1 = 1
- val index2 = 1
当然,将函数的返回值赋值给字段时也是可以自动推断的。
其实根据函数式编程思想中,var变量是个不好的存在,Scala中推荐大家尽可能的采用val的不变量,主要原因是因为val的不可变有助于理清头绪,但是相对的会付出一部分的性能代价。
函数:
Scala中的函数定义与其他的C类语言也不太一样,例如:
- def max( x : Int, y : Int) : Int = {
- if(x > y)
- {
- return x
- }
- else
- {
- return y
- }
- }
嗯,写法很麻烦,看样子可以优化,首先是return ,Scala中,可以不写return,如果不写return 则自动将最后计算的结果作为返回值,如果没有返回值,则函数的返回类型为Unit,类似于Java和C#中 void。
- def max( x : Int, y : Int) : Int = {
- if(x > y) x else y
- }
- def max( x : Int, y : Int) = {
- if(x > y) x else y
- }
最后简化成:
- def max( x : Int, y : Int) = if(x > y) x else y
=====解释器跨行代码=============================================
再解释器中,我们经常会写一些比较长的代码,然后这些代码跨行了,这种时候,我们可以使用 | 作为换行符继续编写代码,例如:
val msg = |
"Hello world"
同样我们也可以使用两个 | 来撤销之前的代码,例如:
val oops =
|
|
这种时候,将撤销对 oops的声明
- Scala学习笔记(四) - 变量,常量,函数及类的定义
- Scala学习笔记(四) - 变量,常量,函数及类的定义
- Scala学习笔记(四) - 变量,常量,函数及类的定义
- Scala学习第一步(变量、常量及函数定义)
- Scala 学习笔记(四)------定义递归函数
- scala编程学习笔记(一)变量定义函数定义
- Scala学习笔记(1)定义函数及循环
- Scala学习笔记(一)--变量定义、函数定义、函数式编程
- 《C++ primer》学习笔记之四:用define指令定义的常量的值做变量名
- scala 常量、变量、方法、类的定义(与java的不同)
- Scala 学习笔记(三)------定义具有可变参数的函数
- Scala 学习笔记(五)------定义匿名函数
- Scala 学习笔记(五)------定义偏函数
- [Scala]Scala学习笔记四 类
- scala中的函数、变量、集合、对象---scala学习笔记(1)
- PHP 学习笔记——定义常量变量。
- 学习笔记---C语言中全局变量,变量,常量的定义与使用
- Scala基础入门(四)Scala中变量、常量
- sqlserver 行转列
- Java根据数据库表格自动生成java实体类
- OC 常用结构体
- 关于LCS的一个证明
- pmap命令
- Scala学习笔记(四) - 变量,常量,函数及类的定义
- 人生小精彩
- mysql学习小结
- 已将该虚拟机配置为64位客户机操作系统,但是无法执行64位操作。此主机支持Intel VT-x,但Intel VT-x禁用
- linux 输入中文
- Weka访问数据库
- Scala学习笔记(五) - 控制语句
- 如何将PDF图片转变成Word
- 《Real-Time Compressive Tracking》论文理解