概述
scala implicit關鍵字詳解(隱式轉換函式、隱式類、隱式引數、隱式值),implicit是scala中的乙個關鍵字,關於它有著豐富的用法,使得scala更靈活和容易擴充套件。
implicit def int2str
(x:int)
:string = x.tostring
這段**宣告了乙個函式int2str,它與正常函式唯一的區別在於前面多出的implicit關鍵字。這裡的implicit就是它字面的含義——隱式,它告訴編譯器,這個函式是乙個隱式轉換函式,能夠把int型別的值轉換成string型別的值。
知識點
scala implicit關鍵字用於定義隱式方法、隱式類、隱式物件隱式轉換的作用:當乙個轉換不合法時,在當前的作用域能夠找到對應的隱式轉換,使得轉換合法定義隱式轉換方法時,方法名自定義,但引數列表只能有乙個
隱式轉換不能存在二義性,即在同一作用域中,只有存在一種型別轉換
通過隱式類,可以讓使用者靈活的自定義和擴充方法。注意:定義隱式類時,主構造器的引數只能有乙個
object demo10
//> f1: (x: int)string
val v3:string=v1 //> v3 : string = 100
//二、隱式類
implicit class
authmethod
(x:string)
def prefix()
=}val s1=
"fil01.txt"
//> s1 : string = fil01.txt
//呼叫suffix方法,獲取檔名的字尾
s1.suffix //> res0: string = .txt
s1.prefix //> res1: string = fil01
//三、隱式物件
trait adder
[t]
def f2
(a:int,b:int)
(implicit adder:adder[int])=
//> f2: (a: int, b: int)(implicit adder: demo10.adder[int])intf2(
2,3)
(new
adder
[int]})
//> res2: int = 5
//隱式物件
implicit val a=
newadder
[int]
}//> a : demo10.adder[int] = demo10$$anonfun$main$1$$anon$2@7f63425af2(
2,3)
(a)//> res3: int = 5f2(
2,3)
//> res4: int = 5
}
object demo09
//返回結果集
result
}//> values: (f: int => int, start: int, end: int)scala.collection.mutable.arrayb
//| uffer[(int, int)]
values
(x=>x*x,-5
,5)//> res0: scala.collection.mutable.arraybuffer[(int, int)] = arraybuffer((-5,25)
//| , (-4,16), (-3,9), (-2,4), (-1,1), (0,0), (1,1), (2,4), (3,9), (4,16), (5,25
//| ))
}
scala 隱式轉換函式 隱式轉換引數
目前的scala相關部落格大概只能算乙個筆記,方便自己記錄,也幫大家查詢資訊了。首先scala中的隱式轉換可以分為隱式函式轉換與隱式引數轉換兩類,下面就來分別說一下自己對這兩種模式的理解。1 隱式函式轉換,我們先看一段 scala val x int 3.14 10 error type misma...
隱式轉換和隱式引數
1 隱式轉換 隱式轉換函式是以implicit關鍵字宣告的帶有單個引數的函式。這種函式將會自動應用,將值從一種型別轉換為另一種型別 object scala01 implicit def f1 d double int double 是輸入型別,int 是轉換後的型別 隱式函式的底層工作原理 def...
mysql 隱式轉換 mysql中的隱式轉換
在mysql查詢中,當查詢條件左右兩側型別不匹配的時候會發生隱式轉換,可能導致查詢無法使用索引。下面分析兩種隱式轉換的情況 看表結構 phone為 int型別,name為 varchar 兩種情況都可以用到索引,這次等號右側是 2 注意帶單引號喲,左側的索引欄位是int型別,因此也會發生隱式轉換,但...