前言
学习Scala之前我们先看一个简单的例子
Java
代码语言:javascript复制List<Product> products = new ArrayList<Product>();
for (Order order : orders) {
products.addAll(order.getProducts());
}
Scala 的:
代码语言:javascript复制def products = orders.flatMap(o => o.products)
甚至可以更简洁:
代码语言:javascript复制def products = orders.flatMap(_.products)
这样我们就可以看出Scala可以写更少的代码来实现同样的功能。
下载
https://www.scala-lang.org/download/2.13.8.html
或者
链接:https://pan.baidu.com/s/1r8qjJ2fE4yqBF82YBIqvHg 提取码:psvm
选择MSI包
注意安装路径不能有空格否则报错
此时不应有 scalabin..libjline-3.21.0.jar。
测试是否可用
代码语言:javascript复制scala -version
IDEA安装插件
安装后重启IDEA
创建项目
项目上右键
添加Scala SDK
添加我们的测试类
代码如下
代码语言:javascript复制package cn.psvmc
object Test {
def main(args: Array[String]): Unit = {
val str: String = "Hello Scala"
print(str)
}
}
语法
get/set
代码语言:javascript复制class User {
private var _age = 0;
// get方法
def age: Int = _age
// set方法
def age_=(a: Int): Unit = {
_age = a
}
}
测试
代码语言:javascript复制object Test {
def main(args: Array[String]): Unit = {
var u = new User()
u.age = 3
println(u.age)
}
}
构造器
代码语言:javascript复制class User {
private var name = ""
private var age = 0
def this(name: String) {
this()
this.name = name
}
def this(name: String, age: Int) {
this(name)
this.age = age
}
def info(): Unit = {
printf("name:%s age is %dn", name, age)
}
}
测试
代码语言:javascript复制object Test {
def main(args: Array[String]): Unit = {
var u = new User("小明", 18)
u.info()
}
}
单例
代码语言:javascript复制object IDGenerator {
private var id = 0;
def newID(): Int = {
id = 1
id
}
}
测试
代码语言:javascript复制object Test {
def main(args: Array[String]): Unit = {
println(IDGenerator.newID())
println(IDGenerator.newID())
}
}
遍历
代码语言:javascript复制object Test {
def main(args: Array[String]): Unit = {
// 遍历List
val list = List(1, 2, 3)
for (item <- list) {
println("item:" item)
}
//遍历Map
val user = Map("name" -> "小明", "age" -> 18)
println(user)
// 方式1
for ((k, v) <- user) {
printf("Key:%s Value:%sn", k, v)
}
//方式2
user foreach {
case (k, v) => printf("Key:%s Value:%sn", k, v)
}
}
}