Sonyfe25cp的玩具

home

Scala 1

18 Jul 2015

###Scala的基础知识

scala中对变量有两种定义:

scala中有7种类型:Byte, Char, Short, Int, Long, Float, Double, Boolean。但是在scala中并不区分基本类型和引用类型(java区分)。这使得可以对数字使用方法,如1.toString()

由于scala没有++和–操作,于是需要用+=1 或者 -=1。

在scala中_是个通配符,类似于java中的*,如import scala.math._

scala没有静态方法,但是它有单例对象。

没有参数且不改变当前对象的方法,调用的时候不带括号。

带有apply方法,例如"hello"(4)//输出o,这就是对字符串apply了charAt方法

更多用法看api:www.scala-lang.org/api

###Scala控制结构

if 与java或者C++中的语法一样,但是多了一个功能,可以带值

val s = if (x > 0) 1 else 0if(x > 0) s =1 else s = 0的效果是一样的。

可如果是val s = if(x > 0) 1,那么返回的类型为AnyVal而不是Int,因为else语句为空。

没有switch结构

并不需要分号,除非是一行内写多个语句

{}块用来包含一系列的表达式,返回结果为最后一个表达式的值

如果某个val需要多步初始化才行,可以val distance = { val dx = x - x0; val dy = y - y0; sqrt(dx * dx + dy * dy) }

printf("xx %s, %d", "a", 2)跟c语言中一样

没有 for(int a = 0; a < 10; a++)这样的循环,只有while,do,foreach循环。

没有break和continue,可以用Boolean搞定,或者Breaks的break

如果在循环中使用yield会生成集合,如:for(i<-1 to 10) yield i %3 会生成Vector(1, 2, 0, 1, 2, 0, 1,2,0,1 ,2)

只要函数不是递归的,不需要指定返回类型,最后的值就是返回值

def fac(n: Int) = { var r = 1; r}

也可以用return直接返回

若是递归则必须指明def fac(n:Int):Int = {xxx}

###在Idea中使用scala

Coursera: https://class.coursera.org/progfun-003/assignment/view?assignment_id=2

Functional Programming Principles in Scala