半小时快速上手Scala

本文总结Scala在语法上的新特性,以达到看得懂Scala程序的地步(Scala有些写法确实是比较骚气~)。

    Scala的语法之所以显得骚气,是因为它的某些关键字或者运算符我们不认识,看起来更接近人类语法,比较随意不固定。

    当我们学习的语言多了之后,就会有比较广阔的见识,当然也会有门户之见,对某些新语言的某些语法嗤之以鼻。但是,新语言(像Scala、Go)的出现,带给我们的知识冲击,一定是一件好事!一些我们想都不敢想的特性(比如goroutine)在语言层面被支持了,极大地提高了我们的生产效率,这才是符合历史发展规律的!以前我们只知道“应该这样”,现在知道了“居然还可以这样”。

    和Go比较的话,Go更像是C/C++的后裔,Scala显然是Java的后裔。不过它们都有一个特点,就是更轻量化,试图总结诸多语言的优点,把最必要的那部分留下(比如包机制、面向对象),把造成臃肿混乱的干掉(比如多重继承),去芜存菁。

    一门语言要能用,必然要有几个核心的API库,用于完成字符串操作、文件操作、网络操作、数据结构与算法等基础功能,比如:C语言的GLIBC,C++的STL,Go也有,Scala呢?

1. 左箭头 <-

2. 数组

var myList = Array(1.9, 2.9, 3.4, 3.5); //用var作为变量的数据类型,一下就让人想起被javascript支配的恐惧

3. 多维数组(不妨称为矩阵)

var myMatrix = ofDim[Int](3, 3)
for (i <- 0 to 10) {
    for (j <- 0 to 10) {
        myMatrix(i)(j) = j;
    }
}

    能够支持矩阵,这就牛B大了,注定它非常适合用于大数据处理。

4. 数组运算--合并

var myList1 = Array(1.9, 2.9, 3.4, 3.5)
var myList2 = Array(8.9, 7.9, 0.4, 1.5)
var myList3 = concat(myList1, myList2)

5. 右箭头 ->

val x = Map("one" -> 1, "two" -> 2, "three" -> 3)

"->"是key和value之间的连接符。

6. 数据类型放在后面

var myVar : String = "foo"

评论:这是跟Go学的吧!C语言老人家好想把它怼到前面去!

7. 使用+号连接字符串

评论:干得漂亮!和Python一样,很自然。

8. 特殊的返回值类型Unit

评论:不明所以,叫void不就好了?Scala作者想装个B?




猜你喜欢

转载自blog.csdn.net/iliveido_foxmail/article/details/80044833