Chinaunix首页 | 论坛 | 博客
  • 博客访问: 73513
  • 博文数量: 8
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 191
  • 用 户 组: 普通用户
  • 注册时间: 2014-07-17 23:01
文章分类

全部博文(8)

文章存档

2014年(8)

我的朋友

分类: Java

2014-10-04 09:36:08

我的Scala学习之路(一)
一、Scala简介

Scala语言为并发、表达性和可扩展性而设计,Scala语言及程序库可以让开发者专注于问题领域,而无需深陷于诸如线程和同步之类的底层基础结构细节。
Scala语言可以利用硬件多核的优势,创建高响应的、可扩展的、高性能的应用。

Scala是一门混合了函数式和面向对象的语言,用Scala创建多线程应用时,你会倾向于函数式编程风格,用不变状态(Immutable State)编写无锁(Lock-Free)代码。
Scala提供了一个基于Actor的消息传递(Message-passing)模型,消除了涉及并发的痛苦问题。运用此模型,你可以编写出简洁的多线程代码,而无需顾虑线程间的数据竞争,以及处理加锁和释放带来的梦魇。
把synchronized这个关键字从你的字典中清除,享受Scala带来的高效生产力吧!

Scala的益处并不局限于多线程应用,还可以用它构建强大简洁的单线程应用,或者是多线程应用中的单线程模块。Scala的强大能力包括自适应静态类型、闭包、不变的容器、优雅的模式匹配。

Scala的并发模型与Erlang语言非常相似,但Scala有两个显著的优势:
1)Scala是强类型的,Erlang不是;
2)Scala运行于JVM之上,可以与Java很好地互操作。

Scala与其它JVM之上的语言如Groovy、JRuby、Clojure等的比较:
1)JRuby和Groovy是动态语言,不是函数式的,而且无法提供比Java更好的并发解决方案;
2)Clojure是混合型的函数式语言,它天生就是动态的,不是静态类型,语法类似于Lisp,难以掌握。

Scala的特性:
1)有基于事件的并发模型;
2)既支持命令式风格,又支持函数式风格;
3)是纯面向对象的;
4)可以很好的与Java混合;
5)强制使用自适应静态类型;
6)构建于一个微内核之上;
7)是高可扩展的,可以用更少的代码创建高性能应用。

二、Scala下载与安装

1、下载
当前Scala的最新版本为:2.11.2版
下载地址:
Windows MSI版:

Windows ZIP版:

Linux RPM版:

MacOSX、Unix版:

API DOC:

SOURCE源码包:


2、安装
安装很简单,如果是zip包解压缩的安装,要注意添加两个环境变量:SCALA_HOME和PATH。

三、Scala语法

在Scala中,变量或函数的类型总是写在变量或函数名称的后面。
Scala有7种数值类型:Byte、Char、Short、Int、Long、Float、Double和Boolean。

type 类型声明
class 类声明
object 对象声明

数值类型:
整型:Int,Long,Short,Byte
浮点型:Double,Float
布尔型:Boolean
字符型:Char,String
除String归于java.lang包外,其它基本类型都是scala包的成员。
Int等基本类型的全名是scala.Int,但包scala同java.lang的所有成员都能自动引用,实际使用时可简化。

整型值:包括十进制、十六进制、八进制
十进制:数开始于非零数字  val one=15
十六进制:数开始于0x或0X  val two=0xABC
八进制:数开始于0而非0x  val three=0567
默认为Int类型,要声明Long类型的值,除直接声明外,还可以在数字后增加L或l。而Short和Byte需要直接声明。
val four=0xABCDL

浮点值:
浮点格式为十进制、小数点、E或e及指数部分
一般浮点数默认为Double类型,要声明Float类型除直接声明外,能在数字后增加F或f

布尔值:
val right=true
val wrong=false

字符值:
Char  单引号间的任意Unicode字符,单引号内前缀反斜杠的八进制、十六进制表字符编码数字
String  双引号之间的任意Unicode字符串

操作符运算
数学操作符:+、-、*、/、%
比较操作符:<、>、>=、<=
逻辑操作符:==、!=
位操作符:&、|、^、~
实际上,Scala没有任何操作符,所有的操作符运算都是对方法(函数)的调用。
前缀后缀操作符是一元操作符,而中缀操作符是二元操作符
操作符的优先级:特殊字符 > */% > +- > : > =! > <> > & > ^ > | > 其它字母 > 赋值操作符

转义序列:
\b  \u0008  退格
\t   \u0090  制表符
\n  \u0004  换行
\f   \u000c  换页
\r   \u000d  回车
\"   \u0022  双引号
\'   \u0027  单引号
\\   \u005c  反斜杠

Scala基础语法:
Scala是基于行的语言,分号和换行都可以作为语句的结束

Scala脚本
1)编写文本文件,存储的后缀名改为.scala。
2)CMD下利用scalac、fsc对scala脚本进行编译
3)只包含简单语句的Scala脚本无需编译,可直接使用scala运行它。

阅读(3001) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

CU博客助理2014-11-25 16:45:39

专家点评:“估计作者想要写一个Scala学习的系列博客,这应该是第一篇文章。从内容上讲,《我的Scala学习之路(一)》属于介绍Scala很详细的文章,它既对Scala本身做了仔细的介绍,又把Scala语言与Erlang语言做了个对比,以及与其它JVM之上的语言如Groovy、JRuby、Clojure也做了个对比,还介绍了Scala语言的特性、安装、语法等内容,对于想了解Scala编程语言的朋友很有参考价值。但是,很希望文章能够从高屋建瓴的视角,对Scala的学习之路做一个学习路线图,这样的话,对Scala初学者的帮助会更大,也可以理清自己的学习道路。希望在Scala学习之路的第二篇文章中能看到相关内容。”