Scala基础

2018-03-17  本文已影响0人  allenggg

学习笔记摘抄于Twitter scala文档:Twitter.github.io
next:Scala类&对象(一)

一 、为什么选择scala

表达能力

简洁

Java互操作性

二、Scala如何工作

  1. 编译成Java字节码
  2. 可在任何标准JVM上运行
    • 甚至是一些不规范的JVM上,如Dalvik
    • Scala编译器是Java编译器的作者写的

三、Scala基础(常量/变量/函数)

常量

val two = 1 + 1
val three: Int = 3

变量

var name = "Steve"
name = "Allen"

函数(方法)

你可以用def创建函数
需要为函数参数指定类型签名

def addOne(m: Int): Int = m + 1
val three = addOne(2) //函数调用, three的值是3

如果函数不带参数,你可以不写括号调用。

def three() = 1 + 2
val a = three() 
val b = three

匿名函数

val func = (x: Int) => x + 1
val three = func(2) //函数调用

如果你的函数有很多表达式,可以使用{}来格式化代码,使之易读。

def timesTwo(i: Int): Int = {
  println("hello world")
  i * 2
}

对匿名函数也是这样

val func1 = { i: Int =>
  println("hello world")
  i * 2
}

在将一个匿名函数作为参数进行传递时,这个语法会经常被用到。

部分应用(Partial application)函数

def adder(m: Int, n: Int) = m + n
val adder2 = adder(2, _: Int)
val res = adder(3) //调用部分应用函数,得到5

你可以部分应用参数列表中的任意参数,而不仅仅是最后一个。

柯里化函数

def multiply(m: Int)(n: Int): Int = m * n
val res = multiply(2)(3) //调用函数

你可以填上第一个参数并且部分应用第二个参数。

val timesTwo = multiply(2) _
val res = timesTwo(3) //return 6

你可以对任何多参数函数执行柯里化。例如之前的adder函数

val newFunc = (adder _).curried

可变长度参数

这是一个特殊的语法,可以向方法传入任意多个同类型的参数。例如要在多个字符串上执行String的capitalize函数,可以这样写:

def capitalizeAll(args: String*) = {
  args.map { arg =>
    arg.capitalize
  }
}
var res = capitalizeAll("rarity", "applejack")

next:Scala类&对象(一)

上一篇下一篇

猜你喜欢

热点阅读