语法说明
- val: 定义常量
- var: 定义变量
- object: 类里面的 方法 可以直接调用, object 类里面的方法类似于 java 中的静态方法
- class: 类里面的方法必须先实例化对象再调用
- trait: 定义接口
- def: 声明方法
- val: 声明函数
- 使用 _ 将 方法转为函数。EG:
val f1 = m0 _
- scala 使用
_
作为通配符, 而不是 *
。 EG: import java.util._
- 使用 case class 声明的类创建对象时不需要使用 new 关键词
主函数有两种启动方式
// 方式-1
object AnswerApp {
def main(args: Array[String]): Unit = {
// start...
}
}
// 方式-2
object AiApp extends App {
// start ...
}
入门案例-1
object AiApp extends App {
// 元素拼接
println(Seq("answerAil", "payabilityRule4Warn", 123, "20190731").mkString("|||"))
// output: answerAil|||payabilityRule4Warn|||123|||20190731
println()
// 定义一个 list
var list = List(1, 2, 3, 4)
// :: 用来拼接一个元素与一个 List, 将 7 添加到列表开头, 不能使用 list::7
list = 7::list
for (e <- list) {
print(e + "-")
}
// output: 7-1-2-3-4-
println("\n")
val myList = List(1, 2, 3) ::: List(4, 5, 6)
for(e <- myList) {
print(e + "-")
}
// output: 1-2-3-4-5-6-
println("\n")
// 定义一个 set
var set = Set(1, 3, 5, 7)
for (e <- set) {
print(e + "-")
}
// output: 1-3-5-7-
println("\n")
// 定义一个 map
val map = Map("one" -> 1, "two" -> 2, "three" -> 3)
for ((k, v) <- map) {
print("k=" + k + ", v=" + v + " ")
}
// output: k=one, v=1 k=two, v=2 k=three, v=3
println("\n")
// 字符串列表
val strList: List[String] = List("Sina", "Google", "Baidu")
// 整型列表
val numList: List[Int] = List(1, 2, 3, 4)
// 空列表
val empty: List[Nothing] = List()
// 二维列表
val dim: List[List[Int]] = List(
List(1, 0, 0),
List(0, 1, 0),
List(0, 0, 1)
)
for (e <- dim) {
for (ele <- e) {
print(ele + "-")
}
println()
val inList = e.asInstanceOf[List[Int]].map(element => {element + 1})
print(inList)
println("\n")
}
/**
output:
1-0-0-
List(2, 1, 1)
0-1-0-
List(1, 2, 1)
0-0-1-
List(1, 1, 2)
*/
}
入门案例-2
object AnswerApp {
def main(args: Array[String]): Unit = {
val list = List(1, 3, 5, 7)
val list2 = list.map(e => {
e + 2
})
for (e <- list2) {
print(e + "-")
}
// output: 3-5-7-9-
println("\n")
val user = UserDTO("Answer", "123456", 20, "answer_ljm@163.com", "pt")
println(user.userName)
// output: Answer
println()
val cacher = new Cacher
cacher.say("hello scala")
println()
println(cacher.trans("answer"))
// output: rlt=answer
println()
println(cacher.myFun(3))
// output: 6
println()
println(Calculater.add(10, 20))
// output: 30
}
// 使用 case class 定义类创建对象时不需要 new
case class UserDTO(userName: String, password: String, age: Integer, email: String, address: String)
}
object Calculater {
def add(x: Int, y: Int): Int = {
x + y
}
def sub(x: Int, y: Int): Int = {
x - y
}
def multi(x: Int, y: Int): Int = {
x * y
}
def div(x: Int, y: Int): Int = {
x / y
}
}
class Cacher {
// 返回值为空
def say(message: String): Unit = {
println(message)
}
// 返回值为 String
def trans(message: String): String = {
String.format("rlt=%s", message)
}
// 声明一个函数
val myFun = (x: Int) => x + 3
}