scala中隱式轉換之總結


1、隱式轉換的時機:

1.當方法中的參數的類型與目標類型不一致時

2.當對象調用類中不存在的方法或成員時,編譯器會自動將對象進行隱式轉換
 
2、隱式解析機制
即編譯器是如何查找到缺失信息的,解析具有以下兩種規則:
1.首先會在當前代碼作用域下查找隱式實體(隱式方法  隱式類 隱式對象)
2.如果第一條規則查找隱式實體失敗,會繼續在隱式參數的類型的作用域里查找
類型的作用域是指與該類型相關聯的全部伴生模塊,一個隱式實體的類型T它的查找范圍如下:
    (1)如果T被定義為T with A with B with C,那么A,B,C都是T的部分,在T的隱式解析過程中,它們的伴生對象都會被搜索
    (2)如果T是參數化類型,那么類型參數和與類型參數相關聯的部分都算作T的部分,比如List[String]的隱式搜索會搜索List的
     伴生對象和String的伴生對象
    (3) 如果T是一個單例類型p.T,即T是屬於某個p對象內,那么這個p對象也會被搜索
    (4) 如果T是個類型注入S#T,那么S和T都會被搜索
 
3、隱式轉換的前提:
1.不存在二義性
2.隱式操作不能嵌套使用(如 convert1(covert2(x)))+y
3.代碼能夠在不使用隱式轉換的前提下能編譯通過,就不會進行隱式轉換


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM