您的位置:首页 > 其它

Scala 初学指南

2016-10-28 23:30 183 查看

特点

功能强大

表达能力强

多范式(面向对象和函数式编程)

运行在JVM平台上

优雅

速度快(开发速度快,运行速度快)

能融合到Hadoop 平台。目前大数据库系统全部运行在JVM平台上

可以无缝调用java API

项目中的核心功能可以使用Scala开发,然后别人调用接口就可以

Scala 的编译器可以自动推断变量类型

提供了 Scala shell

HelloScala

/**
* Created by 耀源 on 2016/10/28.
*/
object HelloScala {//object代表这是一个单例对象或者伴生对象
//放置静态方法,静态变量,不需要new
def main(args: Array[String]): Unit = {
println("Hello Scala")//
}
}


函数和方法的区别

方法 def 定义。返回值可以由编译器自动推断,所以可以省略。但是递归函数不可以省略。

函数定义方式

匿名函数
(x : Int,y : Int) => x+y


普通函数
var add = (x: Int,y : Int) = > x + y
等价于
val add: (Int,Int) => Int = { (a,b)=>a+b }


val func : Int => String = { x => x.toString }
等价于
val func = (x: Int) => x.toString


val func = (x: Int,y Double) => (y,x)
返回值超过两个时可以使用元组的方式返回。

val func: (Int,Double) => (Double,Int) = { (a,b) =>  (b,a)}


区别

可以作为一个值传到方法里

var r = 1 to 10
val f1 = (x : Int) = x*10
val f2 = (x : Int) = x+10

r.map(f1)
r.map(f2)
r.map(_ * 100) // 匿名函数


方法调用函数

val func = (x : Int,y : Int) => x+y

def method1(f: (Int,Int) => Int) : Int = {
f(2,6)
}

//放置静态方法,静态变量,不需要new
def main(args: Array[String]): Unit = {
println(method1(func))
}


神奇的下划线

将方法转换成函数

def method(x: Int,y: Int): Int = x + y

var func = methos _    //将一个方法变成了函数
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  scala