1
假設:擴展方法定義/調用在F#
存在着類型行和細胞在外部組件限定。
問題:
我已經創建了一個擴展方法爲行類型:
module XlRow =
type Row with
member this.xlNewCell (row : Row) =
let cell = Cell()
//Manipulate cell...
cell
此編譯沒有問題,據報道,有預期的簽名
row:Row -> Cell
而且然而,當我試圖調用這樣的方法時,
let row = Row()
let cell = row.xlNewCell()
編譯器報告錯誤「類型'單元'與'行'類型不兼容。在另一方面,下面的語法成功,並且在執行時產生預期的新小區:
let row = Row()
let cell = row.xlNewCell(row)
這是因爲如果編譯器沒有看到「隱this指針」與擴展方法一起去;但它似乎被認爲是某種「擴展方法」,因爲我可以用''來稱呼它。符號。這裏發生了什麼?
是啊,我已經在C#中思考這麼久,我完全錯過了。感謝您幫助我解決它。 – 3Sphere