Scala简介

简介:

主要内容

为什么用Scala
特性
与java使用上的不同
缺点


为什么用Scala

Scala是为并发、表达性和可扩展性而设计的。
函数式的语言
强类型
静态编译
基于JVM
Actor模型
可以当脚本语言
简洁的语法


简洁的语法

点和括号可选
Eg: 1.to(3)等价于1 to 3

原始字符串
Eg: ”””a phase, raw string”””

分号可选
Eg: print(”a line”)

类声明
Eg: class Book(val name:String, var price:Int) {}

数组循环
Eg: (1 to 3).foreach{ i => print(i) }

多重循环
Eg: for(i <-1 to 3; j <-2 to 6){}

 

循环过滤
Eg: for(i <-1 to 10 if i > 5; if i %2 == 0){}

 

符号语法
Eg: /:就是foldLeft

:结尾是目标在运算符后面
Eg: newList:::list


函数式语言

声明式风格
Eg: (1 to 3).map(_ * 2)

高密度的表达式
Eg1: (0 /: (1 to 10)){ _ + _ }
Eg2: (1 to 10).foldLeft(0){ (sum, elem) => elem + sum }

函数作为参数
Eg: def loopThrough( n:Int )( closure:Int => Unit ){
for( i ← 1 to n ) { closure(i) }

loopThrough(5) { 2 * _ }

Curry化
Eg: f(arg1)(arg2) == f(arg1){arg2} == f{arg1}{arg2}


Trait和类型

类型
1. var与val
2. 类型推演(Any, Option, Nothing, 具体类型)

Trait
eg: trait Friend{}
class Human( … ) extends Friend
class Dog( … ) extends Animal with Friend with ...
new Cat( … ) with Friend

Collection
实用的方法:filter(), ++(), **(), map(), foreach(), /:, ::, forall(), exists(), toXXX, mkString()


模式匹配

Eg: def process(input:Any){
val regex = ”””a(\w+)”””.r
input match {
case (a, b) => …
case msg:Double => …
case msg:Int if (msg > 100) => …
case regex(msg) => ...
case _ => ...
}
}


并发编程

receive, receiveWithin
react, reactWithin

Eg: val accumulator = actor {
    loop {
        reactWithin(50) {
            case number: Int =>
                println(number)
                sum(number)
            case timeout =>
                caller ! "end"
                println("timeout")
        }
        println("won't print")
    }
}


其他特性

与java互操作不错
可以只捕捉关心的异常
XML可以直接操作
简化的基本类库,比如Source.fromFile()


缺点

启动速度慢
Java调用Scala有些地方会有问题
写代码的思路需要转变
IDE支持还有待改进
语法有些不一样,需要学习



本文转自passover 51CTO博客,原文链接:http://blog.51cto.com/passover/432275,如需转载请自行联系原作者

相关文章
|
6月前
|
并行计算 Scala
175 Scala 项目案例(Akka简介)
175 Scala 项目案例(Akka简介)
55 0
|
分布式计算 Java Hadoop
Scala简介与Scala的下载安装
Scala简介与Scala的下载安装
Scala简介与Scala的下载安装
|
安全 JavaScript 前端开发
SCALA程序设计 第一章:scala简介
Scala是一门静态类型语音,是一门以Java虚拟机为目标运行环境并将面向对象和函数式编程语言的最佳特性结合在一起的编程语言。
160 0
|
分布式计算 Java 大数据
《Scala入坑笔记》一、Scala简介
Scala 是 Scalable Language 的简写,网上没有发现谁问 Scala 怎么读,你是按 Scalable 的发音读作 ['skeɪlə] 还是喜欢读作斯卡拉? Scala 是一门多范式的能够运行于JVM和.Net平台之上的编程语言,一种类似java的编程语言 ,设计初衷是实现可伸缩的语言 、并集成面向对象编程和函数式编程的各种特性。
1381 0
|
安全 Java 程序员
Scala 简介 优点 及 用途
介绍: Scala 是一种有趣的语言。它一方面吸收继承了多种语言中的优秀特性,一方面又没有抛弃 Java 这个强大的平台,它运行在 Java 虚拟机 (Java Virtual Machine) 之上,轻松实现和丰富的 Java 类库互联互通。它既支持面向对象的编程方式,又支持函数式编程。它写出的程序像动态语言一样简洁,但事实上它确是严格意义上的静态语言。Scala 就像一位武林
6407 0
|
SQL 消息中间件 分布式计算
如何查看spark与hadoop、kafka、Scala、flume、hive等兼容版本【适用于任何版本】
如何查看spark与hadoop、kafka、Scala、flume、hive等兼容版本【适用于任何版本】
691 0
如何查看spark与hadoop、kafka、Scala、flume、hive等兼容版本【适用于任何版本】
|
3月前
|
分布式计算 Java Scala
spark 与 scala 的对应版本查看、在idea中maven版本不要选择17,弄了好久,换成11就可以啦
spark 与 scala 的对应版本查看、.在idea中maven版本不要选择17,弄了好久,换成11就可以啦
116 2
|
3月前
|
分布式计算 数据处理 Scala
Spark 集群和 Scala 编程语言的关系
Spark 集群和 Scala 编程语言的关系
32 0
|
4月前
|
分布式计算 Java Scala
Spark编程语言选择:Scala、Java和Python
Spark编程语言选择:Scala、Java和Python
Spark编程语言选择:Scala、Java和Python