// 암시 적 변환 / **
- 스칼라 암시 적 변환은, 실제로, 코어 암시 적 변환 기능, 즉 암시 적 변환 함수를 정의한다. *
- 프로그램 암시 적 변환 기능의 매우 유연 정의를 만들만큼 프로그램의 도입으로, 스칼라가 자동으로 사용됩니다 가능하며, 프로그래밍을 단순화 할 수 있습니다뿐만 아니라. *
- 키워드 암시 적 변환 수정 기능 implict의 *의 implict 키워드가 암시 적 변환 함수를 호출입니다 *
- 암시 적 변환 형식 Terget 명명 스타일 source2Terget 소스 입력 형식 당신은 * 싶어
- 사용자가 수동으로 자동 스칼라를 호출 은자 함수를 호출 할 필요는 없습니다.
package scaladay02.com.aura
object ImplicitConversion {
def main(args: Array[String]): Unit = {
//定义隐式转换将String类型的参数转为Int类型
implicit def str2Int(str:String):Int=str.length
val str:Int="abcdaa"
println(str)
//将peopel进行隐式转换为int类型
implicit def person2Int(person:People01):Int=person.getAge
//在此处是用来隐式调用自动调用定义的隐式转换方法
val p:Int=new People01()
println(p)
}
}
class People01{
//封装属性
private var name:String=_
private var age:Int=10
def setName(n:String)={
name=n
}
def getName()=name
def setAge(a:Int)= {
age = a
}
def getAge=age
}
스칼라 암시 적 변환 사용자 정의 API
package scaladay02.com.aura
import java.io.File
import scala.io.Source
/**使用隐式转换丰富现有API
* 当现有的API无法满足我们得需求时我们可以用隐式转换定义我们需要的API
* 也就是用隐式转换来丰富现有的API
*/
object AddAPI {
def main(args: Array[String]): Unit = {
class RichFile(file:File){
//定义文件的读取
def read={
Source.fromFile(file).mkString
}
}
//定义隐式转换
implicit def file2RichFile(file:File):RichFile=new RichFile(file)
//创建对象传入文件路径
val file=new File("data/data.log")
//自动调用隐式转换
println(file.read)
}
}
암시 적 변환 참조
// 암시 적 변환 참조가
/
* 클래스에 대한 암시 적 참조 변환 및 일반 기준은 수입 키워드에 의해 이루어집니다
- 그것에 자신의 액세스 범위에 암시 적 변환 기능이 자동으로 적용 할 수있는 한
- 본 클래스 정의에 암시 적 변환의 전방만큼 스캔 할 수있는 경우에
/ *
package scaladay02.com.aura
import java.io.File
import scaladay02.com.aura.AddAPI._
object Quote {
def main(args: Array[String]): Unit = {
val file=new File("data/data.log")
println(file.read)
}
}
암시 적 매개 변수
*** 암시 적 매개 변수
- 이 함수의 내재 된 정의 또는 수정 처리 파라미터를 가리킨다
- 이 시점에서 스칼라 수정 암시와 객체의 특정 유형을 찾기 위해 노력할 것입니다
- 즉, 주입 및 내재적의 매개 변수 값
- 스칼라는 현재 범위가이 개 범위에 발 또는 VAR 볼 수 있습니다 찾을 수 있습니다
- 파라미터 값 내에서 암시 적 암시 첨부 된 개체 인
package scaladay02.com.aura
object ImplicitParameters {
def main(args: Array[String]): Unit = {
val list = List(6, 3, 6, 2, 63, 552, 2, 2)
list.sorted.foreach(println)
}
def implicitPar: Unit ={
//定义集合
val list = List (new People02 ("王敏", 12),
new People02 ("王明", 10),
new People02 ("张琴", 20),
new People02 ("莉莉", 22) )
//定义隐式参数
implicit val order = new Ordering[People02] () {
override def compare (x: People02, y: People02): Int = {
//定义隐式参数的比较条件
y.age.compareTo (x.age)
}
}
//相同类型的隐式转换参数,在可访问的作用域内不可重复,否则冲突
/*implicit val order2 = new Ordering[Person]() {
override def compare(x: Person, y: Person) = {
y.name.compareTo(x.name)
}
}*/
list.sorted.foreach(println)
}
}
//方法的定义
class People02{
var name:String=_
var age:Int=_
def this(name:String,age:Int){
this()
this.age=age
this.name=name
}
}