scala 入门

安装配置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".length
res0: Int = 22

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

例: scala的基本程序

scala> val s = "Hello, world!"
s: String = Hello, world!

scala> println(s)
Hello, world!

scala>  1 + 1223
res1: Int = 1224

scala> s.contains("hello")
res2: Boolean = false

scala> :q

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

scala> 8 + 10 * 2
res0: Int = 28

scala> res0 * 3
res1: Int = 84

scala> "test string"
res2: String = test string

scala> 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.1415926
pi: Double = 3.1415926

scala> var tmp = 4
tmp: Int = 4

scala> tmp = 10
tmp: Int = 10

scala> 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 = 0
i: Int = 0

scala> i += 1
scala> println(i)
1

scala> i -= 2
scala> println(i)
-1

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

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

scala> import scala.math._
import scala.math._

scala> sqrt(2)
res14: Double = 1.4142135623730951

scala> pow(2, 4)
res15: Double = 16.0

scala> min(3, Pi)
res16: Double = 3.0

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

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

scala> res17.distinct
res18: String = helo

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

s[i]; // c++ style
s.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

第一章完
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值