@tsing1226
2016-01-12T00:10:37.000000Z
字数 2225
阅读 909
Scala
Scala表示可扩展性语言,是一种混合函数式编程语言。
Scala重要特征:
Scala是面向对象;
Scala是函数;
Scala是静态类型;
Scala在JVM上运行;
Scala可以执行Java代码。
- 安装JDK,并设置JAVA_HOME环境变量,键入java -version检测是否安装成功。
$java -version
java version "1.7.0_67"
Java(TM) SE Runtime Environment (build 1.7.0_67-b01)
Java HotSpot(TM) 64-Bit Server VM (build 24.65-b04, mixed mode)
- 查看已安装的Java编译器。输入javac-version。
$javac -version
javac 1.7.0_67
tar -zxf scala-2.10.4.tgz -C /opt/modules/
sudo vi /etc/profile
- 添加
##SCALA_HOME
export SCALA_HOME=/opt/modules/scala-2.10.4
export PATH=$SCALA_HOME/bin:$PATH
scala -version
Scala code runner version 2.10.4 -- Copyright 2002-2013, LAMP/EPFL
$ scala
Welcome to Scala version 2.10.4 (Java HotSpot(TM) 64-Bit Server VM, Java 1.7.0_67).
Type in expressions to have them evaluated.
Type :help for more information.
scala> println("Hell,Scala!");
Hell,Scala!
- 创建文件
touch HelloWorld.scala
- 编辑
object HelloWorld {
/* This is my first java program.
* This will print 'Hello World' as the output
*/
def main(args: Array[String]) {
println("Hello, world!") // prints Hello World
}
}
scalac HelloWorld.scala
- 产生文件
HelloWorld.class
HelloWorld$.class
HelloWorld.scala
- 运行程序
scala HelloWorld
Hello, World!
类名 - 对于所有的类名的第一个字母要大写。
如果需要使用几个单词来构成一个类的名称,每个单词的第一个字母要大写。
示例:class MyFirstScalaClass
方法名称 - 所有的方法名称的第一个字母用小写。
如果若干单词被用于构成方法的名称,则每个单词的第一个字母应大写。
示例:def myMethodName()
程序文件名 - 程序文件的名称应该与对象名称完全匹配。
def main(args: Array[String]) - Scala程序从main()方法开始处理,这是每一个Scala程序的强制程序入口部分。
所有的Scala的组件需要名称。使用对象,类,变量和方法名被称为标识符。关键字不能用作标识符和标识是区分大小写的。Scala支持以下四种类型标识符:
- 文字标识符
字母数字标识符开始以字母或下划线,可以使用字母,数字或下划线。“$”字符在Scala中是保留关键字,标识符不能使用。以下是合法的字母标识符:
age, salary, _value, __1_value
以下是非法标识符:
$salary, 123abc, -salary
- 运算符标识
运算符识别符由一个或多个运算符字符。操作字符是可打印的ASCII字符,如+, :, ?, ~ 或#。以下是合法的运算符标识:
- 混合标识符
混合标识符由一个字母数字识别符,随后是一个下划线和运算符标识。以下是合法的混合标识符:
unary_+, myvar_=
在这里,作为一个方法名unary_+定义了一个一元+运算符和myvar_=用来作为方法名称定义了一个赋值运算符。
- 立即数标识符
一个文字标识是包含在反引号(. . .
)的任意字符串。以下是合法的文字标识:
x
<clinit>
yield
下面的列表显示在Scala中的保留字。这些保留关键字不可以被用作常量或变量,或任何其他的标识符名称。
abstract case catch class
def do else extends
false final finally for
forSome if implicit import
lazy match new null
object override package private
protected return sealed super
this throw trait try
true type val var
while with yield
- : = =>
<- <: <% >:
`# @`