Scala - 快速学习01 - Scala简介
Scala简介
- Scala具备强大的并发性,支持函数式编程,可以更好地支持分布式系统;
- Scala语法简洁,能提供优雅的API;
- Scala兼容Java,运行速度快,且能融合到Hadoop生态圈中;
Scala特性
- 交互式编程:提供REPL(Read-Eval-Print Loop,交互式解释器),可以即时查看中间结果并修改
- 可伸展的(Scalable)编程语言:小脚本到大规模系统编程都能胜任
- 纯正的面向对象语言:每个值都是对象,每个操作都是方法调用
- 函数式语言:没有可变变量,不会有内存共享的问题
- 兼容Java,无缝的Java互操作:
- Scala运行于Java平台(JVM,Java 虚拟机)上,,scalac编译器将.scala源文件编译成.class文件(Java字节码),被JVM加载并执行;
- 兼容并可以调用现有的Java类库,Java包可以被import到Scala来直接调用Java方法,访问Java字段,继承Java类和实现Java接口;
- Scala也可以被Java直接调用;
Scala文档
- http://docs.scala-lang.org/zh-cn/
- http://docs.scala-lang.org/zh-cn/cheatsheets/
- http://docs.scala-lang.org/zh-cn/overviews/
Scala基础教程
- 菜鸟教程 - Scala http://www.runoob.com/scala/scala-tutorial.html
- 易百教程 - Scala http://www.yiibai.com/scala/
Scala编码约定
- 区分大小写 - Scala区分大小写
- 类名称 - 所有类名应以大写字母开头。如果包含多个单词,则每个内部单词的第一个字母应该是大写。
- 方法名称 - 所有方法名称应以小写字母开头。如果包含多个单词,则每个内部单词的第一个字母应为大写。
- 程序文件名 - 程序文件的名称必须与对象名称完全匹配,并将.scala作为文件后缀,否则将不会编译。
- def main(args:Array [String]) - Scala程序从main()方法开始,Scala程序的强制性部分。
Scala换行符
- Scala是一种面向行的语言,其语句以分号(;)或换行符终止。
- 语句结尾处的分号(;)通常是可选的。语句在单行上自行显示,则不需要输入。
- 如果在单行上写多个语句,则需要分号。
scala> val test =
|
|
You typed two blank lines. Starting a new command. scala>
Scala注释
- Scala单行和多行注释与Java类似。
- 注释中任何字符都被Scala编译器忽略。
- 多行注释可以嵌套,但需要正确嵌套。
Scala包
- 一个包是一个命名的代码模块
- 包声明是源文件中的第一个非注释行
- 导入Scala软件包,以便在当前的编译范围内引用
- 可以从单个包导入单个类和对象,也可以导入多个类或对象
- import语句可以出现在任何地方,而不是只能在文件顶部。
- import的效果从开始延伸到语句块的结束。
import java.awt.Color // 引入Color
import java.awt._ // 引入包内所有成员
import java.awt.{Color, Font} //引入包中的几个成员,可以使用selector(选取器) import java.util.{HashMap => JavaHashMap} //重命名成员
import java.util.{HashMap => _, _} //隐藏成员 //引入了util包的所有成员,但是HashMap被隐藏了
注意:默认情况下,Scala 总会引入 java.lang._ 、 scala._ 和 Predef._。
Scala - 快速学习01 - Scala简介的更多相关文章
- Scala - 快速学习03 - 基础语法
1- 变量 变量 mutable variable 在程序运行过程中其值可能发生改变的量 关键词var定义变量,定义时直接进行求值 常量 immutable variable 在程序运行过程中其值不会 ...
- Scala - 快速学习02 - 搭建开发环境
1- 下载与安装 下载链接:http://www.scala-lang.org/download/ CMD To run Scala from the command-line, simply dow ...
- Scala - 快速学习05 - 数据结构
1- 数组(Array) 数组一般包括定长数组和变长数组. 可以不指明数组类型,Scala会自动根据提供的初始化数据来推断出数组的类型. 在Scala中,对数组元素的应用,是使用圆括号,而不是方括号. ...
- Scala - 快速学习09 - 函数式编程:一些操作
1- 集合类(collection) 系统地区分了可变的和不可变的集合. scala.collection包中所有的集合类 可变集合(Mutable) 顾名思义,意味着可以修改,移除或者添加一个元素. ...
- Scala - 快速学习08 - 函数式编程:高阶函数
函数式编程的崛起 函数式编程中的“值不可变性”避免了对公共的可变状态进行同步访问控制的复杂问题,能够较好满足分布式并行编程的需求,适应大数据时代的到来. 函数是第一等公民 可以作为实参传递给另外一个函 ...
- Scala - 快速学习07 - 模式匹配
Scala中的模式匹配的功能可以应用到switch语句.类型检查.“解构”等多种场合. 简单匹配 Scala的模式匹配最常用于match语句中.Scala的match语句类似Java里的switch. ...
- Scala - 快速学习06 - 面向对象
1- 类 1.1- 简介:类.方法及对象 类是用来创建对象的蓝图. Scala文件中包含的多个类之间,都是彼此可见的,不需要声明为public. 创建对象 定义好类以后,就可以使用new关键字来创建对 ...
- Scala - 快速学习04 - 求值策略
表达式求值策略(Evaluation Strategy) Scala中所有的运算都是基于表达式的. Call By Value - 对函数实参求值,且仅求值一次:函数调用之前对所有表达式进行求值 Ca ...
- scala快速学习笔记(三):Collections,包
VI.Collections 1.Array 一些常用方法:println, map( _ * 2), filter(_ % 2 == 0), sum, reserve Array是不可变的, ...
随机推荐
- expdp/impdp数据泵用法
--创建目录映射别名 create directory JHRA as 'C:\DataBaseBak\hra_dev\JHRA' --导出数据 expdp JHRA/JHRA@hra_dev dir ...
- jieba库词频统计
一.jieba 库简介 (1) jieba 库的分词原理是利用一个中文词库,将待分词的内容与分词词库进行比对,通过图结构和动态规划方法找到最大概率的词组:除此之外,jieba 库还提供了增加自定义中文 ...
- C# BitArray 二进制处理
int k = 6; byte[] bytearr = BitConverter.GetBytes(k); BitArray myBA = new BitArray(bytearr); for (in ...
- 行盒(line box)垂直方向的属性详解:从font-size、line-height到vertical-align
视觉格式化模型 在一个文档中,每个元素都被表示为0.1或多个矩形的盒子.确定这些盒子的尺寸, 属性 --- 像它的颜色,背景,边框方面 --- 和位置是渲染引擎的目标.① 在CSS中,使用标准盒模型描 ...
- 运用SharedPreferences“偷取”输入的信息
运用SharedPreferences"偷取"输入的信息 本次的任务是 利用SharedPreferences来完成信息的保存和读取 就是你输入什么 手机就可以把输入的内容&quo ...
- Effective C++ 笔记:条款 34 实现继承和接口继承
Differentiate between inheritance of interface and inheritance of implementation. 行为含义 声明一个pure virt ...
- swagger 参数
http://www.mamicode.com/info-detail-2213514.html
- temp--内蒙农信(环境)
规章制度篇: 1, 内蒙农信办公地址: 呼和浩特市赛罕区内蒙古自治区农村信用社联合社(陶利街) 农金大厦1201室. 2, 电子版蓝底照片(办饭卡,自己充钱) , 行里面吃饭标准 早餐8元.午 ...
- Maven学习笔记5:Maven属性、profile和资源过滤
Maven的六类属性 内置属性 主要有两个常用内置属性:${basedir}项目的根目录(包含pom.xml文件的目录),${version}项目版本 POM属性 用户可以使用该属性引用POM文件中对 ...
- [Java练习题] -- 1. 使用java打印杨辉三角
package cn.fzm.demo1.array; import java.util.Scanner; /* * 需求:打印杨辉三角形(行数可以键盘录入) 1 1 1 1 2 1 1 3 3 1 ...