scala 入门

来源:互联网 发布:淘宝网店创业计划书 编辑:程序博客网 时间:2024/05/01 03:26

安装配置scala

首先scala是基于java开发环境的扩展,系统首先需要保证配置好jre和jdk。官方推荐使用java 6 以上版本, 但事实在即将发布的新版本scala 2.12版本中, 只会支持 java 8, 所以我在这里也首先安装了java 8 jdk。

scala需要安装的组件分为两部分, 我的开发环境是在mac下, 所以使用了brew的方法进行了安装, 命令分别是:

brew install scala
brew install sbt

如果系统并没有安装brew,可以去 http://brew.sh/ 进行安装, 步骤很简单。
安装完成之后, 在终端中可以分别执行 scalasbt 命令。

sbt 是 Scala Build Tool的简称在这里可以进行编译,测试和运行你所写好的scala程序。scala 终端是一个方便的脚本翻译环境,它提供了免编译直接运行的功能。


Scala程序快速入门

例:快速计算字符串长度

scala> "you have a long string".lengthres0: Int = 22

提示:sbt 命令的具体命令可以键入 help 指令查看

例: scala的基本程序

scala> val s = "Hello, world!"s: String = Hello, world!scala> println(s)Hello, world!scala>  1 + 1223res1: Int = 1224scala> s.contains("hello")res2: Boolean = falsescala> :q

定义一个字符串之后, 系统返回了资源或者资源号 在这里可以直接连续操作多次

scala> 8 + 10 * 2res0: Int = 28scala> res0 * 3res1: Int = 84scala> "test string"res2: String = test stringscala> res2.regionMatches        toString      codePointCount        getChars           replace              toUpperCase   codePoints            indexOf            replaceAll           ...

在使用资源时,在.号之后按 tab 键 可以显示当前可用的方法名。严格意义上讲,scala程序并不是一个解释型语言。但是经过特殊设计的解释器可以正确执行脚本语句,这个性能被称作评读取-评估-打印-循环 (Read-Eval-Print-Loop) 简称 REPL

scala中,关键字 val 用来定义一个常量, 而变量则用 var 来定义,如果尝试更改 val 类型的值,则会报错,例如

scala> val pi = 3.1415926pi: Double = 3.1415926scala> var tmp = 4tmp: Int = 4scala> tmp = 10tmp: Int = 10scala> pi = 2<console>:8: error: reassignment to val       pi = 2          ^

在以上例子中,我们已经使用了很多scala的数据类型 例如 IntStringDouble 。 scala中不需要指定数据类型,系统会根据值来判断。

例: 各类型转字符串

scala> 1.toString()res5: String = 1

例: 生成一个范围数组

scala> 1.to(10)res6: scala.collection.immutable.Range.Inclusive = Range(1, 2, 3, 4, 5, 6, 7, 8, 9, 10

例: 求字母交集

scala> "helloadsf".intersect("world")res8: String = lod

在scala中,数据之间的类型转换可以使用 .toInt , .toChar, .toString 进行操作, 具体可方法可参见scaladoc


运算符

scala中的运算符与其他语言大同小异 + - * / % 为基本运算符,& | ^ >> << 为位运算符。 在scala中一切都是对象,所以当我们见到如下形式的表达式 1 + 2 的时候, 要明白其实这是 a.+(b) 的一个缩写。 在 1 这个对象下存在一个 +() 的方法。

注意, 在scala下不存在 ++, -- 自增自减运算符, 相关操作可以使用 += -= 来完成。 例如:

scala> var i = 0i: Int = 0scala> i += 1scala> println(i)1scala> i -= 2scala> println(i)-1

scala 无法实现自增自减运算符的原因是 int 类型是 Immutable 类型。

下面我们看看scala导入包和使用函数的方法

scala> import scala.math._import scala.math._scala> sqrt(2)res14: Double = 1.4142135623730951scala> pow(2, 4)res15: Double = 16.0scala> min(3, Pi)res16: Double = 3.0

scala调用函数的方法和其他语言一致, 在导入函数所在的包的时候,替换了java的 *号通配符而使用了下划线 _ 。 我们将在以后章节更多的测试scala包导入的语法

例:找字符串中不重复的字符

scala> res17.distinctres18: String = helo

在scala中是很经常把一个语句当做一个函数方式来使用,这也就和C++ 与 Java的如下语法相同

s[i]; // c++ styles.charAt(i); // java style

在我们scala中,我们可以直接下面的代码来完成相同功能

"nihao"2

其实这个格式只是如下格式的缩写:

"nihao".apply(2)

apply 方法有时可以被理解成scala的构造函数。例如:

Array(1, 4, 9, 16) // 构建数组BigInt("1234324234") //构建bigint类型

在具体构建一个对象时候,可以参考官方文档的apply方法说明

scala 官方开发文档 http://www.scala-lang.org/api/current

第一章完
0 0
原创粉丝点击