没有合适的资源?快使用搜索试试~ 我知道了~
首页Scala详细总结(精辟版++)
这是我学习scala时做的笔记,应该比较全面,对于初学scala足够了。文档排版整齐、方便阅读。 另外,我在百度文库也上传过一份,不过csdn上的版本是最新的。希望可以帮助到你。 --------- 目录 --------- 概述 1 scala解释器 1 scala作为脚本运行 2 scala编译运行 2 scala IDE开发环境 2 scala特点 3 数据类型 3 字符串 4 变量 4 标识符 5 操作符 5 块表达式与赋值 5 控制结构 6 函数 8 类(class)和对象(object) 14 抽象类和抽象成员 17 继承与覆盖(override) 18 特质(trait) 19 显式类型转换 20 隐式转换、隐式参数 20 类型参数化 21 类型信息 22 集合 23 异常 27 断言、检查 27 包和引用 27 scala I/O 29 Actor和并发 29 GUI编程 31 结合scala和java 32
资源详情
资源推荐
总结
本文档针对 ,由于 目前发展迅速,因此可能会和其他版本的不同。
概述
是一门以 虚拟机()为目标运行环境并将面向对象和函数式编程的最佳
特性结合在一起的静态类型编程语言。
是纯粹的面向对象的语言。 虽然是面向对象的语言,但是它不是纯粹的,因
为 的基本数据类型不是类,并且在 中还有静态成员变量和静态方法。相反,
是纯粹面向对象的,每个值都是对象,每个操作都是方法调用。
也是一个成熟的函数式语言。函数式编程有两个指导思想:①函数是头等值,也
就是说函数也是值,并且和其他类型(如整数、字符串等)处于同一地位,函数可以被当
作参数传递,也可以被当作返回值返回,还可以在函数中定义函数等等;②程序的操作应
该把输入值映射为输出值而不是就地修改,也就是说函数调用不应产生副作用,虽然函数
式编程语言鼓励使用“无副作用”的方法,但是 并不强制你必须这么做。 允许你使
用指令式的编程风格,但是随着你对 的深入了解,你可能会更倾向于一种更为函数式
的编程风格。向函数式编程转变,你就应该尽量去使用 、不可变对象、无副作用方法,
而不是 、可变对象、有副作用方法。要明白的是,从指令式编程向函数式编程的转变会
很困难,因此你要做好充分的准备,并不断的努力。
运行于 之上,并且它可以访问任何的 类库并且与 框架进行互操作,
也大量重用了 类型和类库。
第一个 程序:
!"#$%&'!"$()
*!""#+,+)
-
-
scala 解释器
安装好 并配置好 .%/ 环境变量之后,就可以在终端中输入“0命令打开
解释器。在其中,你可以像使用 , 一样,使用 %1 补全、23 搜索、上下方向键切换
历史命令等等。退出 解释器,可以使用命令:“40或者“45!0。
由于解释器是输入一句执行一句,因此也常称为 67.8。67.8 一次只能看到一行代码,
因此如果你要在其中粘贴代码段的话,可能会出现问题,这时你可以使用粘贴模式,键入
如下语句:
*
然后把代码粘贴进去,再按下 23,这样 67.8 就会把代码段当作一个整体来分析。
scala 作为脚本运行
代码也可以作为脚本运行,只要你设置好代码文件的 , 前导词(* ),
并将代码文件设置为可执行。如下:
9:;5;!";"
*!""#+这是 脚本+)
设置代码文件为可执行,即可执行之啦。
脚本的命令行参数保存在名为 $ 的数组中,你可以使用 $ 获取命令行输入的
程序参数。
scala 编译运行
编译器 会将 代码编译为 可以运行的字节码,然后就可以在 上
执行了。假设有一个 /文件,我们就可以使用 /编译,然后使用
/ 运行。 当然也可以使用 工具 来运行,但需 要在 *, 里指 定
!&。对于 *,,在 <"! 家族的系统上,类路径的各个项目由冒号“0分隔,在
=!"> 系统上,它们由分号“?0分隔。例如,在 !"5 上你可以输入这样的命令来运行
(注意 *, 最后加一个“0):
*,;5;;;!;!&/
scala IDE 开发环境
你可以使用 !*或者 !"!!作为 的 @A7 开发环境,但都需要安装 插
件才行。下面分别介绍这两种方式:
!* 开发环境配置:
!!*(下载地址:,B*;;!$)中集成了 插件,你可以直接
使用它进行开发,不过它包含的可能不是我们想要的 版本,因此,还是在该网站上下
载对应的 插件,插在 !* 上,这样更好啊。
我们先安装 !*5",然后下载 !*5" 以及 对应的 C 插件升
级包:5*!D!*。将插件解压缩,将 5和 *5$!"目录下的所有东东都复制到
!* 中的对应目录中,重启 !* 即可。然后就可以新建 * 了。
!"!! 开发环境配置:
我们先安装好 !"!!,然后安装 插件,自动安装插件有时会非常慢,尤其是
在 ,!"。我们还是手动配置插件吧。请注意插件的版本,必须与当前 ! 版本兼容。手动
配置插件方法如下:
#)进入 E"$F*5$!"F>*!!搜索你要下载的插件名称,右侧可以找到
下载地址。
#)解压插件压缩包,把插件的全部文件都复制到 @"!@A7% 安装程序的 *5$!" 文件
夹中,注意插件最好以一个单独的文件夹放在 *5$!" 目录下。
#)一般重启 !"!! 就会自动加载插件,进入 E"$F*5$!"看看有木有。如果不
自动加载的话,进入 E"$F*5$!"F!"*5$!" !C,找到刚才复制的插件位置,
再然后就好了。
接下来就可以新建 *,新建时我选择的是“0(不是 ,因为我这选择 之
后,等半天 都不会配置好,郁闷啊)。
相关姿势:
什么是 1? 1G#")! *15!,是 的构建工具,与 的 " 地
位相同。其设计宗旨是让简单的项目可以简单的配置,而复杂的项目可以复杂的配置。
scala 特点
在 中,语句之后的“?0是可选的,这根据你的喜好。当有多个语句在同一行时,必
须加上分号,但不建议把多个语句放在一行。
在 中,建议使用 个空格作为代码缩进,这个之前不喜欢,现在稀饭了⁄#HHIHJHIHH)H
在 中,符号“K0相当于 中的通配符“L0。
类似于 33、,索引也是从 开始,但元组是个例外,它从 开始。
数据类型
有 M 种数值类型:1&、2,、,、@"、8"$、N 和 A5,以及 种非数
值类型:1" 和 <"!(只有一个值“#)0,相当于 和 33中的 !,即空值),它们被
统称作值类型。这些类型都是抽象的 O" 类#不能使用 "> 新建,也不能被继承),在
包中定义,是对 基本数据类型的包装,因此与 基本数据类型有相同的长度。同时,
还提供了 6!,@"、6!,2, 等等,它们分别提供 @"、2, 等所不具备的便捷方法。
中的值类型是 ""5 的,因此诸如 @"、A5 等类型的变量不可以存储空值。
要想保存空值,可以使用这些办法:① 选定一个不会出现的数值作为空值标志,如
@"5;②使用 P*Q" 代替,如 P*Q"'@"(;③明确使用 的 @"$。
在 中,我们使用方法,而不是强制类型转换,来做数值类型之间的转换,如
@"、M2,。另外也可以参见显式类型转换和隐式转换。
字符串
沿用了 "$ 包中的 !"$。在 中,常量也称作字面量,字符串字面量由
双引号包含的字符组成,同时 提供了另一种定义字符串常量的语法——原始字符串,
它以三个双引号作为开始和结束,字符串内部可以包含无论何种任意字符。
字符串插值:
自 版本开始, 提供了一种新的机制来根据数据生成字符串:字符串插值。字
符串插值允许使用者将变量引用直接插入处理过的字面字符中。如下例:
" G+ +
*!""#+/RS" +) ;;/R
提供了三种创新的字符串插值方法:、 和 >。使用者还可以自定义插值器。
插值器:就像上面一样,在任何字符串前加上 ,就可以直接在串中使用变量了,形
式为:S变量名。字符串插值器也可以处理任意的表达式,形式为:S表达式-。
插值器:在任何字符串字面前加上 ,就可以生成简单的格式化串,功能相似于其他
语言中的 *!"T函数。当使用 插值器的时候,所有的变量引用都应当后跟一个 *!"T&
格式的字符串,如U。示例如下:
" G+ +
$G
*!""#+/RS" U@V S$U&+) ;;/R @V &
> 插值器:除了对字面值中的字符不做编码外,>插值器与 插值器在功能上是相
同的。示例如下:
*!""#>+W"+) ;;W"
变量
有两种变量: 和 。 如同 中的 O" 变量, 如同 中的非 O" 变
量。由于 是完全面向对象的,因此 和 只是声明了对象的引用是不可变的还是
可变的,并不能说明引用指向的对象的可变性。声明变量的同时需要初始化之,否则该变
量就是抽象的。如果不指定变量的类型,编译器会从初始化它的表达式中推断出其类型。
当然你也可以在必要的时候指定其类型,但注意,在 中变量或函数的类型总是写在变
量或函数的名称的后边。示例如下:
">GX&0
">R $!"$GX&0
标识符
标识符有四种形式:字母数字标识符、操作符标识符、混合标识符、字面量标识
符。
字母数字标识符:跟其他语言类似,由字母、数字和下划线组成,但需注意“S0字符被
保留作为 编译器产生的标识符之用,你不要随意使用它啊。
操作符标识符:由一个或多个操作符字符组成。 编译器将在内部“粉碎”操作符标
识符以转换成合法的内嵌“S0的 标识符。若你想从 代码中访问这个标识符,就应该
剩余35页未读,继续阅读
smallx_i
- 粉丝: 0
- 资源: 3
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- 基于嵌入式ARMLinux的播放器的设计与实现 word格式.doc
- 经典:大学答辩通过_基于ARM微处理器的嵌入式指纹识别系统设计.pdf
- 嵌入式系统课程设计.doc
- 基于飞思卡尔控制器的智能寻迹车设计ARM基础课程课程设计.doc
- 下载基于ARM7的压电陶瓷换能器导纳圆测量仪的研制PDF格式可编辑.pdf
- 课程设计基于ARM的嵌入式家居监控系统的研究与设计.doc
- 论文基于嵌入式ARM的图像采集处理系统设计.doc
- 嵌入式基于ARM9的中断驱动程序设计—课程设计.doc
- 在Linux系统下基于ARM嵌入式的俄罗斯方块.doc
- STK-MirrorStore Product Release Notes(96130)-44
- STK-MirrorStore Storage Connectivity Guide for StorageTek Disk A
- 龙虾养殖远程监控系统的设计与实现数据采集上位-机软件模块-本科毕业设计.doc
- 龙虾养殖远程监控系统的设计与实现数据采集上位-机软件模块-.doc
- 龙虾养殖远程监控系统的设计与实现数据采集上位-机软件模块-本科生毕业论文.doc
- 麻阳风貌展示网站的设计与实现毕业论文.pdf
- 高速走丝气中电火花线切割精加工编程设计.doc
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功