package test54
//函数的默认参数
//如何动态去设置函数默认参数值!
//隐式参数值
object test {
def sayName(implicit str:String="小陈"):Unit={
println(str)
}
//隐式参数值
// implicit val x:String="小美。。"
implicit val x1:String="小美丽。。。"
def main(args: Array[String]): Unit = {
sayName("小明")
sayName()
sayName //默认参数
}
}
package test54
//前提:写好的代码不要动!
//隐式类:implicit class==隐式转换函数+类
object test1 {
class BaseUser(){
def insertUser(){println("insertUser")}
}
//第一步:定义一个有updateUser功能分类PowerUser
//第二步:定义一个隐式转换函数,把BaseUser--->powerUser
implicit class PowerUser(u:BaseUser){
def updateUser(){println("updateUser")}
}
// implicit def transform(u:BaseUser):PowerUser={
// new PowerUser()
// }
//给这个类添加新功能
def main(args: Array[String]): Unit = {
val u1=new BaseUser()
u1.insertUser()
u1.updateUser()//添加一个新功能
}
}
*********
package test54
import scala.language.postfixOps
//给所有整数添加新功能
//1.判断是否偶数
//2.阶乘.5!=5*3*2*1=120
// 1+2+3+4+5
object test2 {
implicit class XXX(d:Int){
def isEven:Boolean= {
d % 2==0
}
//补充一个求阶乘的函数,函数的名称就是i
def ! :Int={
var rs=1
for (i <-1to d){
rs *= i
}
rs
}
}
def main(args: Array[String]): Unit = {
println(10.isEven)//true
println(9.isEven)//false
println(5.!)//120
println(5.!)//120
println(10!)//3628800
}
}