object Demon1
{
def main
(args
: Array
[String]): Unit = {
def function1
(x
: Int, y
: Int): Int = x
+ y
println
("函数1:" + function1
(1, 2))
println
("=====================================")
val function2
= (x
: Int, y
: Int) => (x
+ y
)
println
("匿名函数2:" + function2
(1, 2))
println
("=====================================")
val function3
: (Int, Int) => Int = (_
+ _
)
println
("函数3:" + function3
(1, 2))
println
("=====================================")
def square
(x
: Int, y
: Int) = x
* y
def function4
(f
: (Int, Int) => Int, name
: String) = {
val res
= f
(2, 3)
name
+ ":" + res
}
println
("函数为参数的1:" + function4
(square
, "sam"))
def func
(f
: (Int, Int) => Int, name
: String) = {
val res
= f
(2, 3)
name
+ ":" + res
}
val res
= func
((x
: Int, y
: Int) => x
+ y
, "sam")
println
("函数为参数的2:" + res
)
println
("=====================================")
def function5
(name
: String) = {
name
println
("无返回值函数1.1")
}
println
(function5
("sam"))
def function6
(name
: String) = {
println
("无返回值函数1.2")
name
}
println
(function6
("sam"))
println
("=====================================")
val function7
= (name
: String) => {
name
println
("无返回值函数2")
}
println
(function7
("sally"))
println
("=====================================")
def function8
(): (Int, Int) => Int = {
def demon
(x
: Int, y
: Int) = {
x
+ y
}
demon
}
println
("函数作为返回值类型1: " + function8
()(1, 2))
println
("=====================================")
def function9
(n
: Int): (Int, Int) => Int = {
if (n
% 2 == 0) {
def funAdd
(x
: Int, y
: Int) = x
+ y
funAdd
} else {
def funDelet
(x
: Int, y
: Int) = x
- y
funDelet
}
}
println
("函数作为返回值类型2: " + function9
(4)(5, 3))
println
("=====================================")
def leng
(s
: String) = {
s
.length
}
def function10
(f
: (String) => Int, name
: String): (Int) => Unit = {
val l
= f
(name
)
if (l
% 2 == 0) {
def d1
(x
: Int) = {
println
("今天是你的幸运日")
}
d1
} else {
(x
: Int) => {
println
("今天就不要出门了")
}
}
}
function10
(leng
, "saml")(6)
println
("=====================================")
def currying
(a
: Int, b
: Int)(c
: Int, d
: Int) = {
a
+ b
+ c
+ d
}
println
("柯理化函数:" + currying
(1, 2)(3, 4))
println
("=====================================")
def demon1
(x
: Int): String = x
match {
case 1 => "one"
case 2 => "two"
case _
=> "other"
}
println
("模式匹配1:" + demon1
(1))
println
("=====================================")
def demon2
(x
: Any): String = x
match {
case x
: Int => "Int类型"
case x
: String => "String类型"
case _
=> "其他类型"
}
println
("模式匹配2:" + demon2
("sdas"))
println
("=====================================")
case class Student
(name
: String, age
: Int)
def ex
(student
: Student
) = student
match {
case Student
("sam", 19) => println
("My name is " + student
.name
+ ",I'm " + student
.age
+ " years old")
case Student
(name
, age
) => println
("My name is " + student
.name
+ ",I'm " + student
.age
+ " years old")
}
val stu
= Student
("Dally", 19)
ex
(stu
)
println
("=====================================")
implicit var a
: Int = 10
def demon3
(a
: Int, b
: Int)(implicit c
: Int) = {
a
+ b
+ c
}
println
(demon3
(1, 2))
println
("=====================================")
def demon4
(a
: Int, b
: Int)(implicit c
: Int) = {
a
+ b
+ c
}
println
(demon4
(1, 2)(5))
println
("=====================================")
def demon5
(a
: Int, b
: Int)(implicit c
: Int,d
:Int) = {
a
+ b
+ c
+d
}
println
(demon5
(1,2)(3,4))
def demon6
(a
:Int)(implicit b
:Int,c
:String)={
a
+b
+c
}
println
(demon6
(1)(2,"John"))
println
("=====================================")
implicit def DoubleToInt
(a
:Double)={a
.toInt
}
val x
:Int=3.5
println
(x
)
}
}
转载请注明原文地址: https://lol.8miu.com/read-19727.html