隱式轉換似乎是Scala的一個主要和有爭議的特性,雖然它們在C#中的突出顯得少得多。 他們在兩種語言之間有什麼區別?有什麼地方我不得不在Scala中使用implicits,或者我總是可以選擇是否要像C#中那樣隱式或顯式地進行轉換?通常在C#中,我喜歡使轉換顯式化,以便維護程序員意圖的類型檢查,即使消費者是我自己。Scala和C中的隱式通話#
難道我說得對,沒有C#或斯卡拉可以隱式分離或合併方法/函數的參數?在def myMethod(v1:Int,v2:Int)中不會接受Tuple2 [Int,Int]作爲其參數列表,而def yourMethod(v1:Tuple2 [Int,Int])將不接受兩個ints作爲其參數名單。推測性的隱式/顯式參數分割/合併必須由語言設計者考慮。當使用多個但相似的圖形庫的點結構時,我確實發現了這個特性。
關於爭議:也許我得到了棍棒的錯誤結局,但牽連似乎是「複雜性」辯論的底層。我注意到隱式創建正在被分流到SIP 18中的非默認功能中。 –
@RichOliver「隱含」和「隱式轉換」不是同一件事。後者是以前者來實現的,但幾乎不是它的主要觀點。隱含的概念 - 與隱含的轉換相對,對於Scala來說非常獨特 - 確實是一些批評的目標。即便如此,我也不會把它置於複雜性辯論的「底層」。 –
啊,這是我失蹤的重要信息。 –