静态手机网站,seo文章代写平台,锦州做网站公司,东莞松山湖一#xff1a;
1.隐式转换概述#xff1a;
隐式转换与模式匹配都是scala中提供的比较强大的特性。
2.隐式转换的定义#xff1a;
在实际编程中#xff0c;要想把一个不匹配的类型赋值#xff0c;需要先转换成匹配的类型。scala的隐式转换会自动将一种类型的数据转换成…
一
1.隐式转换概述
隐式转换与模式匹配都是scala中提供的比较强大的特性。
2.隐式转换的定义
在实际编程中要想把一个不匹配的类型赋值需要先转换成匹配的类型。scala的隐式转换会自动将一种类型的数据转换成另一种类型。隐式转换就是scala自动转换。对于户编程而言不可见不需要手动编写转换代码。
3.scala隐式转换声明
scala的隐式转换声明关键字为implicit
package test10object test10_4 {class StrongString(str: String) {def isPhone(str: String): Boolean {val reg 1[3-9]\\d{9}.rreg.matches(str)}def isEmail:Boolean{val regrreg.matches(str)}}implicit def strongString(str:String):StrongString {new StrongString(str)}def main(args: Array[String]): Unit {val str: String 13239612335//需求给字符串补充一个功能isPhone。判断它是不是一个手机号码val rs str.isPhone
// val rs (new StrongString(str)).isPhone
// val rs stringtoStrongString(str).isPhoneprintln(s$str 的检查结果是:$rs)
}
}
package test10//隐式值
object test10_3 {//函数的默认参数//函数的默认参数小花def sayName(implicit name:String小花):Unit {println(s我叫$name)}//需求更 改函数的默认值(不传入这个值的时候用到的值)不要写死//步骤//1.定义函数的默认参数时添加implicit//2.需要修改这个默认值时定义一个同类型的隐式值implicit 修改变量implicit val xxx: String 小明明// implicit val defaultValue:String小明def main(args: Array[String]): Unit {sayName(无敌小旋风)sayNamesayName//小明}}
package test10
//潜规则老代码不要改可以加新代码
object test10_2 {
//小明def getAge():Double {19.5}//implicit 隐式转换//函数名字不重要//重要的是参数类型和返回值类型//隐式函数implicit修饰的函数//特点1.自动被调用 2.函数名字不重要重要的是参数类型和返回值类型implicit def abc(d:Double):Int {d.toInt}//小花def main(args: Array[String]): Unit {
// val i :Int doubleToInt(getAge())val i:Int getAge()println(i)}}
package test10object test10_5 {class StrongString(val str:String){def isPhone():Boolean{val reg 1[3-9]\\d{9}.rreg.matches(str)}//验证是否身份证号def isID:Boolean {val reg .rreg.matches(str)}}//定义一个特殊的转换函数把str StrongString的对象implicit def xxxx(str:String):StrongString {
// println(偷偷调用implicit)new StrongString(str)
}def main(args: Array[String]): Unit {println(136a.isPhone())}
}