Scala简介

Scala(Scalable Language)是一门多范式(multi-paradigm)编程语言,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文档

zh-cn

Scala基础教程

 

Scala编码约定

  • 区分大小写 - Scala区分大小写
  • 类名称 - 所有类名应以大写字母开头。如果包含多个单词,则每个内部单词的第一个字母应该是大写。
  • 方法名称 - 所有方法名称应以小写字母开头。如果包含多个单词,则每个内部单词的第一个字母应为大写。
  • 程序文件名 - 程序文件的名称必须与对象名称完全匹配,并将.scala作为文件后缀,否则将不会编译。
  • def main(args:Array [String]) - Scala程序从main()方法开始,Scala程序的强制性部分。
 

Scala换行符

  • Scala是一种面向行的语言,其语句以分号(;)或换行符终止。
  • 语句结尾处的分号(;)通常是可选的。语句在单行上自行显示,则不需要输入。
  • 如果在单行上写多个语句,则需要分号。
在命令行下,通常Scala解释器会推断出输入的代码是否结束。
如果还没有结束,解释器就会在下一行显示一个竖线“|”,可以继续输入剩余的代码。
如果想放弃本次输入,可以在“|”后面连续敲入两个回车,结束本次输入。
scala> val test =
|
|
You typed two blank lines. Starting a new command. scala>

Scala注释

  • Scala单行和多行注释与Java类似。
  • 注释中任何字符都被Scala编译器忽略。
  • 多行注释可以嵌套,但需要正确嵌套。
 

Scala包

使用 package 关键字定义包。
  • 一个包是一个命名的代码模块
  • 包声明是源文件中的第一个非注释行
  • 导入Scala软件包,以便在当前的编译范围内引用
  • 可以从单个包导入单个类和对象,也可以导入多个类或对象
使用 import 关键字引用包。
  • 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简介的更多相关文章

  1. Scala - 快速学习03 - 基础语法

    1- 变量 变量 mutable variable 在程序运行过程中其值可能发生改变的量 关键词var定义变量,定义时直接进行求值 常量 immutable variable 在程序运行过程中其值不会 ...

  2. Scala - 快速学习02 - 搭建开发环境

    1- 下载与安装 下载链接:http://www.scala-lang.org/download/ CMD To run Scala from the command-line, simply dow ...

  3. Scala - 快速学习05 - 数据结构

    1- 数组(Array) 数组一般包括定长数组和变长数组. 可以不指明数组类型,Scala会自动根据提供的初始化数据来推断出数组的类型. 在Scala中,对数组元素的应用,是使用圆括号,而不是方括号. ...

  4. Scala - 快速学习09 - 函数式编程:一些操作

    1- 集合类(collection) 系统地区分了可变的和不可变的集合. scala.collection包中所有的集合类 可变集合(Mutable) 顾名思义,意味着可以修改,移除或者添加一个元素. ...

  5. Scala - 快速学习08 - 函数式编程:高阶函数

    函数式编程的崛起 函数式编程中的“值不可变性”避免了对公共的可变状态进行同步访问控制的复杂问题,能够较好满足分布式并行编程的需求,适应大数据时代的到来. 函数是第一等公民 可以作为实参传递给另外一个函 ...

  6. Scala - 快速学习07 - 模式匹配

    Scala中的模式匹配的功能可以应用到switch语句.类型检查.“解构”等多种场合. 简单匹配 Scala的模式匹配最常用于match语句中.Scala的match语句类似Java里的switch. ...

  7. Scala - 快速学习06 - 面向对象

    1- 类 1.1- 简介:类.方法及对象 类是用来创建对象的蓝图. Scala文件中包含的多个类之间,都是彼此可见的,不需要声明为public. 创建对象 定义好类以后,就可以使用new关键字来创建对 ...

  8. Scala - 快速学习04 - 求值策略

    表达式求值策略(Evaluation Strategy) Scala中所有的运算都是基于表达式的. Call By Value - 对函数实参求值,且仅求值一次:函数调用之前对所有表达式进行求值 Ca ...

  9. scala快速学习笔记(三):Collections,包

    VI.Collections 1.Array 一些常用方法:println,  map( _ * 2), filter(_ % 2 == 0),  sum,   reserve Array是不可变的, ...

随机推荐

  1. ASP .NetCore 部署500错误 查看异常详情

    部署.net core 网站后,访问报错:500 按照教程设置完成,但访问时总是提示 服务器内部错误,没有详细的异常信息,无从下手. 解决办法: 1.在站点根目录下按住shift+鼠标右键,选择在此处 ...

  2. 颜色16进制转为RGB格式

    <script> 2 function getRGB(str){ var arr = str.split(""); var myred = arr[1]+arr[2]; ...

  3. BaseDao.util(虎大将军)

    package logistics.util; import java.sql.Connection; import java.sql.PreparedStatement; import java.s ...

  4. OO前三次作业分析

    一,第一次作业分析 度量分析: 第一次的oo作业按照常理来说是不应该有这么多的圈复杂度,但是由于第一次写的时候,完全不了解java的相关知识,按照c语言的方式来写,完全的根据指导书的逻辑,先写好了正确 ...

  5. 【转】Android总结篇系列:Activity启动模式(lauchMode)

    [转]Android总结篇系列:Activity启动模式(lauchMode) 本来想针对Activity中的启动模式写篇文章的,后来网上发现有人已经总结的相当好了,在此直接引用过来,并加上自己的一些 ...

  6. JavaScript RegExp(正则)

    第一种方式是直接通过/正则表达式/写出来,第二种方式是通过new RegExp('正则表达式')创建一个RegExp对象. 两种写法是一样的: var re1 = /ABC\-001/; var re ...

  7. [html]CSS中的margin、border、padding区别

    图解CSS padding.margin.border属性W3C组织建议把所有网页上的对像都放在一个盒(box)中,设计师可以通过创建定义来控制这个盒的属性,这些对像包括段落.列表.标题.图片以及层. ...

  8. C++标准库第二版笔记 2.1

    C++标准库第二版笔记 2.1 1 Range-Based for 循环 for ( decl : coll ) { statements; } // collaborate 类似C# foreach ...

  9. Codeforces Round #555 (Div. 3) E. Minimum Array

    题意:b数组可以自由排序,c[i]=(a[i]+b[i])%n. 题目中要求c数组的字典序是最小的.那么我们需要尽量满足前面的c[i],才能使字典序最小. 我们知道a[i]和b[i]都是[0,n-1] ...

  10. mktime 夏令时

    我们的最终目的是把字符串格式的时间转换为内部使用的“日历时间”,即到UTC 1970年1月1日零时的秒数.这里就存在夏令时的问题.比如俄罗斯时间2008年10月26日2:30由于夏令时的跳变会经过两次 ...