Bạn không thể cung cấp các nhà khai thác quá tải với nhiều loại hiện có. Một tùy chọn là sử dụng tên toán tử khác (như Natahan gợi ý). Tuy nhiên, bạn cũng có thể định nghĩa một kiểu mới để đại diện cho đường dẫn trong # mã F của bạn và cung cấp cho các nhà điều hành /
cho loại hình này:
open System
// Simple type for representing paths
type Path(p) =
// Returns the path as a string
member x.Path = p
// Combines two paths
static member (/)(p1:Path, p2:Path) =
Path(IO.Path.Combine(p1.Path, p2.Path))
let n = 4/2
let p = Path("C:\\")/Path("Temp")
này có một lợi ích quan trọng - bằng cách làm cho các loại rõ ràng hơn, bạn cung cấp cho kiểm tra loại thêm thông tin mà nó có thể sử dụng để xác minh mã của bạn. Nếu bạn sử dụng chuỗi để biểu thị đường dẫn, thì bạn có thể dễ dàng nhầm lẫn đường dẫn với một số chuỗi khác (ví dụ: tên). Nếu bạn xác định loại Path
của mình, trình kiểm tra loại sẽ ngăn bạn mắc lỗi này.
Hơn nữa, trình biên dịch sẽ không cho phép bạn (đơn giản) kết hợp đường dẫn không chính xác (mà có thể dễ dàng xảy ra nếu bạn đại diện cho những con đường như dây đàn), vì p + p
không được định nghĩa (bạn có thể chỉ sử dụng /
, mà chính xác sử dụng Path.Combine
) .
Nguồn
2010-05-11 16:19:39
Các bạn đã cố gắng định nghĩa nó như op_Division? CẬP NHẬT: đừng bận tâm; nó sẽ không hoạt động – pblasucci
Tôi không nghĩ rằng bạn có thể quá tải thành viên (hoặc nhà khai thác) trên các lớp học từ trước. – Gabe