一、基础语法
1.变量类型
// 上表中列出的数据类型都是对象,也就是说scala没有java中的原生类型。在scala是可以对数字等基础类型调用方法的。
2.变量声明——能用val的尽量使用val!!!
//使用val定义的变量值是不可变的,相当于java里用final修饰的变量 val i = 3 //使用var定义的变量是可变得,在Scala中鼓励使用val var j = "hello" //Scala编译器会自动推断变量的类型,必要的时候可以指定类型 var k: String = "world"
3.条件表达式
常规判断
val i = 10 if (i < 100) { println("i<100") }
//支持混合类型表达式,将结果返回给变量 val z = if (x > 1) 1 else "error"
4.块表达式
//在scala中{}中课包含一系列表达式,块中最后一个表达式的值就是块的值 //下面就是一个块表达式 val result = { if (x < 0){ -1 } else if(x >= 1) { 1 } else { "error" } }
5.循环
to是闭区间;until是左闭右开
//for(i <- 表达式),表达式1 to 10返回一个Range(区间) //每次循环将区间中的一个值赋给i for (i <- 1 to 3) { println(i) } //for(i <- 数组) for (i <- Array(1,3,5)) { println(i) } //高级for循环 //每个生成器都可以带一个条件,注意:if前面没有分号 for (i <- 1 to 3; if i > 2) { println(i) } //for推导式:如果for循环的循环体以yield开始,则该循环会构建出一个集合 //每次迭代生成集合中的一个值 val j = for (i <- 1 to 3) yield i * 2 println(j)
6.方法/函数声明
方法
def functionName ([参数列表]) : [return type]
def m1(x: Int, y: String): String = { // 可以省略return,编译器会自动推断 x + y }
函数(有点儿像拉姆达表达式)
val f = (x:Int) => 2*x
在函数式编程语言中,函数是“头等公民”,它可以像任何其他数据类型一样被传递和操作
结合Java8中拉姆达表达式,还是阔以理解的
def m1(f: (Int, Int) => Int): Int = { f(1,2) } val f = (x:Int, y:Int) => x +y m1(f)
方法与函数的转换:
def m1(x:Int, y:Int): Int = { x + y } // 使用下划线进行方法与函数的转换 val f = m1 _
使用的话,例如Java8中的集合的使用,list.map(),里边可以传入一个拉姆达表达式
原文地址:https://www.cnblogs.com/jiangbei/p/8640590.html
时间: 2024-10-10 18:54:35