所謂隱式轉換,是指以implicit關鍵字宣告的帶有單個引數的方法。它是自動被呼叫的,自動將某種型別轉換為另外一種型別。
隱式轉換的使用步驟:示例:使用隱式轉換,讓file具備有reada在object中定義隱式轉換方法(使用implicit)
在需要用到隱式轉換的地方,引入隱式轉換(使用import)
自動呼叫隱式轉化後的方法
class richfile(val f:file)
object mypredef
object implicitconvertdemo
}
前面,我們手動使用了import來匯入隱式轉換。是否可以不手動import呢?
在scala中,如果在當前作用域中有隱式轉換方法,會自動匯入隱式轉換。
示例:將隱式轉換方法定義在main所在的object中
class richfile(val f:file)
object implicitconvertdemo
}
什麼時候會自動執行隱式轉換呢?
當物件呼叫中不存在的方法時,編譯器會自動將物件進行隱式轉換
當方法中的引數型別與目標型別不一致時
示例:
object implicitconvertdemo
def test1(r:richfile) = println(r.read())
}
函式或方法可以帶有乙個標記為implicit的引數列表。這種情況,編譯器會查詢預設值,提供給該方法。
定義隱式引數:
在方法後面新增乙個引數列表,引數使用implicit修飾
在object中定義implicit修飾的隱式值
呼叫方法,可以不傳入implicit修飾的引數列表,編譯器會自動查詢預設值
示例:
// 定義乙個分隔符類
case class delimiters(left:string, right:string)
object mypredef1
object implicitparamdemo
}
和隱式轉換一樣,可以使用import手動匯入隱式引數如果在當前作用域定義了隱式值,會自動進行匯入
Scala 隱式轉換和隱式引數
紙上得來終覺淺,絕知此事要躬行!隱式函式基本介紹 隱式轉換函式是以implicit關鍵字宣告的帶有單個引數的函式。這種函式將會自動應用,將值從一種型別轉換為另一種型別 隱式函式快速入門 使用隱式函式可以優雅的解決資料型別轉換,案例入門.implicit def f1 d double int dou...
scala 隱式轉換函式 隱式轉換引數
目前的scala相關部落格大概只能算乙個筆記,方便自己記錄,也幫大家查詢資訊了。首先scala中的隱式轉換可以分為隱式函式轉換與隱式引數轉換兩類,下面就來分別說一下自己對這兩種模式的理解。1 隱式函式轉換,我們先看一段 scala val x int 3.14 10 error type misma...
Scala入門之隱式轉換與隱式引數
隱式轉換是一項強大的程式語言功能,它不僅能夠簡化程式設計,也能夠使程式具有很強的靈活性。隱式函式的名稱對結構沒有影響.函式可以是任何名字,只看引數與返回,也就是看能不能把傳入的引數變成需要的型別就行了。隱式轉換可以定義在目標檔案當中,即隱式轉換函式與目標 在同乙個檔案當中,也可以將隱式轉換集中放置在...