1 / 66
文档名称:

scala笔记.doc

格式:doc   大小:802KB   页数:66页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

scala笔记.doc

上传人:橘子 2022/4/6 文件大小:802 KB

下载得到文件列表

scala笔记.doc

相关文档

文档介绍

文档介绍:
Scala 笔记
崔钢
******@
目录
1 前言 4
2 写给自己 4
3 Scala语言 5
。直译很多时候会很啰嗦。而且大多数情况下,意义的质量要好于直译。直译某些时候是因为没有完全的理解,不得已而使用的手段。技术性的文章比较好翻译,因为我们和作者往往有着相似的技术背景,只是在程度上有所不同。作者本身肯定比我们深厚一些,但是这个因素并不会影响我们对作者的理解。
另外由于英文和中文的表达形式不同,所以翻译的质量会受到翻译者水平的影响。不过我在这里保证我绝对不会用翻译工具来翻译。所有的句子都是我自己顺通的。
我们学****任何东西,也不可能顿悟。虽然我很想这样。但是不可能。
同时,翻译也意味这在某种情况下,大概只有翻译者知道自己在说什么。所以这里建议大家有可呢的话还是尽量去学****原文。

Scala语言
概述
语言的名字:scala是基于“可扩展语言(scalable language)”的。语言的设计考虑到用户自己对语言本身的扩展。它的用途十分广泛,从脚本到大规模的系统。
Scala大约包含以下的几项内容:
面向对象
函数式
泛型
基于actors的并发
DSL能力
Scala基于JVM。享有全部的java类库支持。
Scala语言具有面向对象的特征,同时也支持函数式编程。
Scala的重要原则:
简洁
便利
分号
可有可无,一般没有。单行要写分号。

有些方法可以没有点号和括弧
在scala中方法可以省略括弧和点号。无参方法。函数,没有副作用的情况下也可以省略点号和括弧。特别是能够推断出来的时候。
变量定义
变量定义分var和val,其中val是不可变的。
包结构
在scala中的文件组织,可以采用类似java的package的方式,也可以采用类似c#语言中的namespace形式。
嵌套的格式:

Scala中不要求文件名和类名一致。但是这样做还是有好处的。

函数编程
普通函数定义(包括类中的方法):
一级函数(函数字面值):
Scala具有一级函数。你不仅可以定义函数并使用它们,也可以使用匿名字面值来写函数并把它们当做值来传递。
例如:
按:这种方式可以定义简短的函数,并且可以使用闭包。
一级函数(first-class functions):在计算机科学领域,如果一个语言把函数视为一级对象(first-class objects)的话,我们称这种语言支持一级函数(也叫做函数字面值或者函数类型)。在编程环境中,一级对象是一种实体,这种实体可以被当做参数来进行传递,或者从某个子程序返回,或者指派给某个变量。

函数字面值被编译成一个类,这个类在运行时会被实例化为一个函数值。因此,函数字面值和值的区别在于函数字面值存在于源代码中,而函数值作为一个对象存在于运行时。这种区别非常相似于类和对象之间的差别。
函数值也是对象,所以你可以把他们存储在一个变量里面。这些变量也是函数,因此你可以通过圆括号来执行本地函数调用。如:
调用: increase (10)
返回:11
短型字面值函数(Short forms of function literals)
如下列:
编译器知道这个x是整数,因为可以推断出来。(因为目标someNumbers这个list整数的)
按:我觉得这个符合最小惊讶原则。Scala的一个重要原则就是能省则省。

占位符(Placeholder syntax)
形如:
使用占位符(就是一个下划线)可以简化函数字面值。占位符可以替代参数,前提是这个参数只能在函数字面值中出现一次。系统可以推断这个占位符的类型。等同于:
,但是使用占位符更简洁。
注意,当系统不能推断的时候要指明类型:
结果是:15
偏函数(Partially applied functions)
下划线可以替代全部的参数:
等同于:
这种情况下,下划线代表的一个参数列表。要注意下划线应该和函数之间保留一个空格,不然编译器会认为你是一个其他的符号。比如另外一个方法名叫“println_”,但是这个方法可能不存在。
A partially applied function is an expression in which you don’t