我想知道是否有更好的方法來實現接受記錄並修改它們的函數。記錄中的通用方法
所以我有兩種類型的實體,都具有磁盤上相應的文件:
type Picture = { Artist : string; File : string }
type Book = { Author : string; File : string }
我想一般的功能,可以同時複製的圖片和書籍。在OOP世界中,我可能會創建通用接口IArtefact { File : string }
,在兩個記錄中實現它,然後創建適用於它的Move方法。例如:
let move<'a:IArtefact>(a : 'a) (path : string) =
File.Move(a.File, path)
{ a with File = path }
但是我想F#不支持這樣的概念。 F#的做法是什麼?
我不認爲在F#中不支持任何重要的C#功能。正如泛型一樣支持接口。在F#中解決問題的好方法不在StackOverflow的範圍之內 - 也許你會在CodeReview或程序員中獲得更多的幫助。 – Luaan
據我所知,沒有辦法定義實現一個接口的記錄,然後在F#中將該記錄投射到該接口。這是相當重要的「C#特性」。不過,我可能錯了,或者有其他方法存在。因此,在SO,IMHO上提出這樣的問題是完全正確的。這不是一個代碼審查,也不是一般的編程問題。 –
爲什麼不定義如下的函數? '讓移動(文件:字符串)(路徑:字符串)'?然後你可以用'aPicture.File'和'aBook.File'來調用它。 –