回答
什麼它們是deprecated作爲Scala 2.11(下棄用)
根據該other tutorial結合的觀點是,含有的隱式轉換的隱式參數。
該教程將某種隱含定義爲「視圖」,但是這個術語在社區中還沒有真正引起注意(部分原因是因爲「視圖」已經意味着其他事物)。大多數人(IME)會將該鏈接中描述的內容稱爲「隱式轉換」。
最好的用例是「pimp my library pattern」,相當於例如「其他語言中的「擴展方法」,即將新方法添加到不能自行更改的第三方類型。通常你這樣做是因爲第三方類型「真正」符合一些常見的超級界面,但圖書館的作者並沒有讓它們的類「擴展」適當的類型。或者你只是爲了節省自己的一些打字工作。例如。最近,我不喜歡的東西下面(類型/方法名是不正確的,但應該給你一個想法),因爲AWS API有一個回調接口,而不是一個階未來接口
class PimpedAwsTransfer(inner: AwsTransfer) {
def responseFuture = Future.fromCallback {
cb =>
inner.onSuccess(new AwsCallback({
def callback(response: TransferResponse) = cb(transferResponse)
}))
}
}
implicit def pimpAwsTransfer(transfer: AwsTransfer) = new PimpedAwsTransfer(transfer)
現在someTransfer.responseFuture
是一個有效的方法調用在AwsTransfer
上製作,並將調用我在PimpedAwsTransfer
中定義的方法。所以,我可以寫這樣的代碼:
for {
response1 <- transfer1.responseFuture
response2 <- transfer2.responseFuture
} yield {...}
(注意,在現代的斯卡拉你可以使用一個implicit class
而非class
+ implicit def
,但是這是同樣的事情剛糖)
我可能只是有一靜態convertAwsTransferToFuture()
功能某處,但通過將方法放在AwsTransfer
對象上,我使API更像我想要使用的那個。這主要是關於適應第三方類型。
有些人也將這些隱式轉換用作轉換,即使第三方類型符合其自己的接口。海事組織這是一個不太好的用途,因爲它可能導致非常混亂的代碼;這些用法通常可以用類型類型替換,使用隱式方法參數而不是隱式轉換。
@Gangstead是正確的,視圖邊界在2.11中被棄用,但它們只是你鏈接的一小部分。
- 1. 是什麼〜斯卡拉嗎?
- 2. 是什麼|在斯卡拉
- 3. 斯卡拉的A *是什麼?
- 4. 斯卡拉的eta擴展是什麼?
- 5. 這是什麼叫斯卡拉
- 6. 斯卡拉通用宏觀
- 7. 什麼是特斯拉k20m卡的優化的卡箍庫
- 8. 簡單的斯卡拉宏觀
- 9. 什麼是「:+」的意思是在斯卡拉
- 10. 增強斷言斯卡拉宏觀
- 11. 斯卡拉宏觀修改對象
- 12. 斯卡拉監聽器/觀察員
- 13. 什麼是'斯卡拉-2.11`文件夾的IntelliJ IDEA的目的
- 14. .map函數的用途是什麼,以及那個_是什麼。在斯卡拉
- 15. 斯卡拉斯卡拉 - 但類RDD是不變的類型T
- 16. 斯卡拉類型歸屬的目的是什麼?
- 17. 什麼是「?」符號(問號)是否意味着在斯卡拉?
- 18. 什麼是卡桑德拉
- 19. 斯卡拉分數是什麼時候需要的
- 20. 斯卡拉中的Builder,Combiner和Splitter是什麼?
- 21. 這是什麼斯卡拉「新」的語法
- 22. 什麼是R的子集斯卡拉火花相當於
- 23. 斯卡拉未來未分配,這是幹什麼的?
- 24. 斯卡拉工具的當前狀態是什麼?
- 25. 斯卡拉類型投影的正確限制是什麼?
- 26. 斯卡拉嵌套循環的替代方案是什麼?
- 27. 斯卡拉的基本集合類型是什麼?
- 28. <:<斯卡拉中的意思是什麼?
- 29. 斯卡拉宏上的位置是什麼?
- 30. 斯卡拉最便宜的類型是什麼?