文档章节

Scala笔记

开拓者-2017
 开拓者-2017
发布于 2014/12/27 23:17
字数 836
阅读 28
收藏 0

一、基础

1、在Scala声明值和变量的时候,用val声明的值是不能改变你赋予它的内容的,而var可以。如下:

scala>val answer = 8
answer: Int = 8

val定义的值实际上是一个常量——无法改变其内容

如果我们想要声明其值可以改变的变量,我们可以用var:

var counter = 0
counter = 1 //OK,我们可以改变一个var

2、在指定变量类型的时候,Scala和Java有一些差别:

Java:

String greeting;

Scala:

val greeting: String = null;

3、Scala7种数值类型:Byte、Char、Short、Int、Long、Float、Double、Boolean。

4、在Scala中,我们用方法,而不是强制类型转换,来做数值类型之间的转换。例如:99.44.toInt得到99,99.toChar得到'c'。和Java一样,toString将任意的对象转换成字符串。

要将包含了数字的字符串转换成数值,使用toInt或者toDouble。例如,“99.44”.toDouble得到99.44。

5、Scala的算术和操作符重载时需要注意的是:Scala中的操作符实际上是方法。

比如说:

a + b

是如下方法调用的简写:

a.+(b)

此处的+是方法名。Scala中可以使用几乎任何符号来为方法命名,通常来说,你可以用:

a 方法 b

作为一下代码的简写:

a.方法(b)

这里的方法是一个带有两个参数的方法(一个隐式的和一个显式的)。例如:

1.to(10)可以写成: 1 to 10

6、Scala还有一个显著的不同,Scala并没有提供++和--操作符,我们需要使用+=1或者-=1

7、在Scala中的通配符是 _ 而不像是java的 * 。例如在引入时,import scala.math._

8、Scala的apply方法是一个很常用的方法。举例来说,如果s是一个字符串,那么s(i)就是该字符串的第i个字符。而字C++中,我们会写成s[i],在java中,我们会写成s.charAt(i)。在Scala中,我们却可以直接这样:"Hello"(4)//这样将会产出'o'。可以将这种方法看做是()操作符的重载形式,它背后实现原理是一个名为apply的方法。例如,在StringOps类的文档中,有以下方法:

def apply(n: Int):Char

其实也就是说,"Hello"(4)是如下语句的简写:

"Hello".apply(4)

9、Java程序员们使用Javadoc来浏览Java API,Scala也有自己的版本,叫做Scaladoc。

二、控制结构和函数

1、Scala的if/else语法结构和Java或C++一样。但是,值得注意的是在Scala中if/else表达式是有值的,这个值就是跟在if或else之后的表达式的值。如:

if (x > 0) 1 else -1

上述表达式的值是1或者-1,具体取决于x的值。甚至可以将if/else表达式的值赋值给变量:

val s = if (x > 0) 1 else -1

这和下面的语句效果是一样的:

if (x > 0) s = 1 else s = -1

但是,第一种写法更好,因为它用来初始化一个val,而在第二种写法中,s必须是var。

© 著作权归作者所有

开拓者-2017
粉丝 38
博文 150
码字总数 301555
作品 0
大兴
程序员
私信 提问
Scala 学习笔记 模式匹配

1. 模式匹配简介 模式匹配是 Scala 的重要特性之一,前面两篇笔记Scala学习笔记(六) Scala的偏函数和偏应用函数、Scala学习笔记(七) Sealed Class 和 Enumeration都是为了这一篇而铺垫准备的...

Tony沈哲
2017/05/16
0
0
Scala学习笔记 - 函数

Scala学习笔记 - 函数 OneCoder2016-09-2157 阅读 Scala Scala做为支持函数式编程的语言,函数自然是其核心的特性,因此笔者对函数部分的学习自然会更加认真细致一些。但也仅仅是基础部分。 ...

OneCoder
2016/09/21
0
0
Scala学习笔记-基础语法

Scala学习笔记-基础语法 OneCoder2016-09-2046 阅读 Scala 上手学习Scala语言。先熟悉一下语法。对于Scala笔者也是完全的新手,对scala的设计思想和实现原理没有太多了解。错误在所难免,还望...

OneCoder
2016/09/20
0
0
蚂蚁笔记桌面端 2.1 发布

蚂蚁笔记桌面端 2.1 发布了。 Leanote(中文名: 蚂蚁笔记)桌面端2.1发布, 主要解决了同步丢失笔记的问题. 修复的BUG: 同步优化, 解决丢失笔记问题 主题优化 支持德语 添加Matlab, Scala, Sql语...

lifephp
2016/07/04
9.5K
34
scala学习笔记

1.lazy 惰性计算 惰性 求值 特别用于 函数式编程语言 中。在使用延迟求值的时候,表达式不在它被绑定到变量之后就立即求值,而是在该值被取用的时候求值 。 除可以得到性能的提升外,惰性计算...

cjun1990
2015/09/10
126
0

没有更多内容

加载失败,请刷新页面

加载更多

NASA的10条编码规则

关于NASA的10条编程规则,他们曾表示:这些规则的作用就像汽车上的安全带:最初,它们可能有点不舒服,但过了一会儿,它们的使用就变成了第二天性,而没有使用它们就变得不可想象。 Gerard J...

京东云技术新知
2分钟前
12
0
TortoiseSVN图标未显示在Windows 7下

我似乎无法在Windows 7下显示图标,我真的很想念Windows XP。 怎么修好? #1楼 他们在这里展示得很好 您使用的是64位版本的Windows 7以及32位版本的TortoiseSVN吗? 如果是这样,那么它们只会...

javail
26分钟前
43
0
开源播放器

DPlayer

glen_xu
33分钟前
134
0
gitlab Error:Gitaly - load linguist colors - permission denied

报错信息 2020-01-20_14:35:08.43180 time=“2020-01-20T14:35:08Z” level=info msg=“Starting Gitaly” version=“Gitaly, version 0.81.0, built 20180225.183225” 2020-01-20_14:35:0......

JennerLuo
39分钟前
125
0
微信小程序的自动化测试框架

微信发布了小程序的自动化测试框架Minium,提供了多种运行验证方式,其特点: 支持一套脚本,iOS & Android & 模拟器,三端运行 提供丰富的页面跳转方式,看不到也能去得到 可以获取和设置小...

测者陈磊
52分钟前
84
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部