下载和安装
linux简单一些,可以直接 yum install scala就好了 ,windows的话,可以到下载的链接 http://www.scala-lang.org/download/ 我下载的是scala-2.11.6 。对应是一个 msi文件(速度有点小慢啊)。下载完以后直接安装,安装完成以后,对应的bin目录会自动添加到path路径下。 然后就可以直接在命令行进入 REPL了
Welcome to Scala version 2.11.5 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_1
1).
Type in expressions to have them evaluated.
Type :help for more information.
scala>
在REPL上写表达式
直接看对应的输入输出,比java有意思一些。基本能说明问题了
res0: Int = 40
scala> res0* 0.5
res1: Double = 20.0
scala> "str"+res1
res2: String = str20.0
scala> res2.to
toCharArray toLowerCase toString toUpperCase
scala> res2.toUpperCase
res3: String = STR20.0
REPL就是一个简单的scala的解释器,当然他的真实动作是输入的内容会被快速编译成字节码,然后通过字节码在jvm虚拟机上运行。这是一个 read-evalution-print-loop的过程,简称 REPL。
声明值和变量
scala中变量声明可以有两种方式,一种是 val 关键词,这个有点类似java中的 final ,表示常量,声明完了以后就不能再修改,还有一种是变量,通过var 来修饰,具体看下面的例子
a: Int = 21
scala> a = a * 10
<console>:8: error: reassignment to val
a = a * 10
^
scala> var b = 1 + 2 * 10
b: Int = 21
scala> b = b * 10
b: Int = 210
在scala中,尽量使用 val,这样对jvm的效率优化有好处。
另外,可以看出来,scala似乎不太关心变量的类型。或者说,scala变量的类型是解释器自己推断的。当然,你也可以自己指定对应的类型,当然,你要慢慢习惯这种类型放变量之后的方式。。。
str: String = my name is bill
基本类型
sacla中的基本类型和java是一样的,也是8个,但是scala没有包装类型,或者说两者之间的转换已经自动帮我们做掉了。比如
res6: String = 121212
scala> 1.to(10)
res7: scala.collection.immutable.Range.Inclusive = Range(1, 2, 3, 4, 5, 6, 7, 8,
9, 10)
操作符
操作符里有下面几个需要注意
1 在scala中, a.方法(b) 可以简写成 a 方法 b 。比如
res4: scala.collection.immutable.Range.Inclusive = Range(1, 2, 3, 4, 5, 6, 7, 8,
9, 10)
scala> 1 to 10
res5: scala.collection.immutable.Range.Inclusive = Range(1, 2, 3, 4, 5, 6, 7, 8,
9, 10)
2 scala中,没有 ++ 运算符。。如果需要++ ,那么只能通过 num = num +1来实现
num: Int = 10
scala> num = num++
<console>:8: error: value ++ is not a member of Int
num = num++
^
scala> num = num + 1
num: Int = 11
3 不在参数的方法,可以省略对应的().
res11: Int = 10
scala> "abbccddedf".length()
res12: Int = 10
apply方法
scala可以支持函数的()重载,这个在java当中是没有的,所以比较稀奇。他的实现原理是,自动调用对应类的apply方法,比如 “helloworld”(4) 表示的是 获取“helloworld”这个字符串的第4个字符(以0为第一个),实际上是调用了 "helloworld".apply(4)
scala> "helloworld"(4) res13: Char = o scala> "helloworld".apply(4) res14: Char = o
条件表达式
scala中的条件表达式和java一样。不过在scala中,条件表达式是有值的,这个值就是if或者else后面的那个值。
scala> val x = 1 x: Int = 1 scala> if(x>0) 1 else 0 res1: Int = 1 scala> val y = if(x>0) 1 else 0 y: Int = 1
循环
while语句和java一样
scala> var count = 5; count: Int = 5 scala> while(count >= 0){ println(count);count=count-1} 5 4 3 2 1 0
注意while循环中有多个语句的时候,记得用分号括起来,否则scala会只执行 println语句。
for循环与java不太一样,不过有点类似java的增强型的for循环,但是也不是完全一样。
scala> for(i <- 1 to 5) println(i) 1 2 3 4 5 scala> for(i <- 1 until 5) println(i) 1 2 3 4
to 和until 的区别,已经很明显了。
函数
scala中的函数类似java中的静态方法。
scala> def abs(num :Double) = if(num > 0) num else -num abs: (num: Double)Double scala> abs(0) res5: Double = -0.0 scala> abs(10) res6: Double = 10.0
过程
如果方法没有返回值,那么就叫这个是过程。之前的hello world程序中的main方法就是过程,其实没有返回值也可以认为返回值是Unit,但是非常不建议这样写。具体如下
scala> def bar(name : String) {println("hello,"+name)} bar: (name: String)Unit scala> bar("bill") hello,bill scala> def _bar(name : String):Unit = {println("hello,"+name)} _bar: (name: String)Unit scala> _bar("bill") hello,bill
第二种方式非常不建议写
方法的默认参数
在java中并没有这个功能。很有趣啊。具体的例子如下
scala> def foo(str :String,left : String = "[",right:String = "]") = left + str + right foo: (str: String, left: String, right: String)String scala> foo("bar") res0: String = [bar] scala> foo("bar","<") res1: String = <bar] scala> foo("bar","<",">") res2: String = <bar> scala> foo("bar",right=">") res3: String = [bar>
基本上可以把这个功能说明清楚了。
可变参数
可变参数在java中也有,在java中,可变参数是在类型上加点点来实现的,在scala中是加星号。
scala> def sum(num :Int*)= {var count =0;for(i <- num) count += i; count} sum: (num: Int*)Int scala> sum(1,2,3,4,5) res6: Int = 15
相关推荐
1. **Scala编译器和运行时库**:这是开发Scala项目所必需的基础组件,包括Scala编译器(scalac)和Scala标准库。 2. **插件本身**:包含用于在IntelliJ IDEA中集成Scala开发环境的代码和配置文件。这些文件使得IDE...
1. Scala编译器:这是将Scala源代码转化为可执行代码的工具,通常包括 scalac,它实现了Scala语言的语法解析、类型检查和代码生成。 2. Scala运行时库:这是Scala程序运行所必需的库,包含了许多内置类和函数,以及...
Scala是一种强大的多范式编程语言,它融合了面向对象和函数式编程的概念。IntelliJ IDEA是一款广受欢迎的集成开发环境(IDE),尤其在Java开发者中备受推崇。它提供了丰富的功能来支持各种编程语言,包括Scala。`...
Scala是一种强大的多范式编程语言,它融合了面向对象和函数式编程的概念。这个压缩包“scala-intellij-bin-2020.2.23.zip”是为IntelliJ IDEA设计的一个特定版本的Scala插件,适用于2020.2.23更新。IntelliJ IDEA是...
Scala是一种强大的多范式编程语言,它融合了面向对象和函数式编程的概念。IntelliJ IDEA是一款广受赞誉的Java集成开发环境(IDE),而`scala-intellij-bin-2017.3.11.zip`是专为IntelliJ IDEA设计的Scala插件,用于...
Scala是一种强大的多范式编程语言,它融合了面向对象和函数式编程的概念。IntelliJ IDEA是一款广受欢迎的集成开发环境(IDE),尤其在Java和Scala开发者中非常流行。"scala-intellij-bin-2.2.0.zip" 文件是IntelliJ ...
Scala是一种强大的多范式编程语言,它融合了面向对象和函数式编程的概念。IntelliJ IDEA是一款广受欢迎的集成开发环境(IDE),尤其在Java和Scala开发者中深受喜爱。"scala-intellij-bin-2020.1.10.zip" 是一个包含...
Scala是一种强大的静态类型编程语言,它融合了面向对象和函数式编程的概念,为开发者提供了丰富的表达能力和高效的开发体验...IntelliJ IDEA的Scala支持则为开发者提供了强大的辅助,使得学习和使用Scala变得更加容易。
1. 类与对象统一:Scala中一切皆为对象,类和对象的概念被统一,使得面向对象和函数式编程风格可以无缝融合。 2. 特质(Traits):特质可以看作是接口的扩展,允许实现部分方法,提供了一种灵活的多继承解决方案。 3...
### Scala入门知识点...通过上述介绍,我们不仅了解了Scala的基本概念、安装配置过程,还学习了如何使用Scala进行基础编程。Scala作为一种结合了面向对象和函数式编程优点的语言,为开发者提供了强大而灵活的工具集。
Scala是一种强大的多范式编程语言,它融合了面向对象和函数式编程的特性。这个"scala-docs-2.11.8.rar"压缩包包含了Scala 2.11.8版本...通过深入学习和利用这个文档,开发者可以更好地掌握Scala的精髓,提升编程效率。
Scala是一种强大的多范式编程语言,它融合了面向对象和函数式编程的概念。这个"scala-2.13.0-M1.tgz"文件是Scala编程语言的一个...不断学习和掌握Scala的新特性和最佳实践,将有助于你更好地利用这种强大的编程工具。
1. **Scala 语言**: Scala 是一种多范式编程语言,结合了面向对象和函数式编程的概念。它的设计目标是提高代码的表达性和可维护性,并支持大规模并行计算。Scala 2.11 是 Scala 的一个主要版本,引入了新的特性、...
1. **语言指南**:这部分详细解释了Scala的基本语法、控制结构、类与对象、函数、模式匹配等核心概念,是学习Scala语法的起点。 2. **标准库文档**:展示了Scala库中各种类和方法的API,包括集合库、并发工具、IO...
Scala是一种强大的、面向对象的编程语言,它融合了函数式编程和面向对象编程的概念,为开发者提供了高效且灵活的编程体验。sbt(Simple Build Tool)是Scala项目的默认构建工具,它允许用户以声明性的方式定义项目...
Scala是一种强大的多范式编程语言,它融合了面向对象和函数式编程的概念。这个"scala-2.12.10.zip"文件是Scala编程语言的特定版本——2.12.10,专为Windows操作系统设计的安装包。Scala 2.12.x系列是该语言的一个...
1. **类型系统**:Scala的类型系统非常强大且灵活,支持隐式转换、类型推断和泛型。它的类型安全机制可以在编译期间发现许多潜在的问题,避免了运行时错误。 2. **面向对象编程**:Scala支持类、接口和继承,同时...
1. **基础语法**:Scala的基础语法与Java有很多相似之处,但也有其独特的特点,如模式匹配、高阶函数、类型推断和case类。文档会详细解释这些概念,帮助初学者快速上手。 2. **类型系统**:Scala有一个强大的静态...
Scala是一种强大的多范式编程语言,它融合了面向对象编程和函数式编程的概念。Scala-2.12.8是该语言的一个版本,专为Java虚拟机(JVM)设计,与Java代码高度兼容,同时提供了更高级的特性和抽象。这个版本的发布主要...
Scala是一种强大的多范式编程语言,它融合了面向对象和函数式编程的概念,设计用于提高开发人员的生产力和代码的可读性。标题中的“scala-2.11”指的是Scala的一个特定版本,即2.11.x系列,这是一个稳定且广泛使用的...