Vì vậy, đã nhận được để ghi lại trong hành trình F # của tôi và lúc đầu họ có vẻ khá nguy hiểm. Lúc đầu, điều này có vẻ thông minh:Bản ghi F #: Nguy hiểm, chỉ để sử dụng hạn chế hoặc chức năng được sử dụng tốt?
type Card = { Name : string;
Phone : string;
Ok : bool }
let cardA = { Name = "Alf" ; Phone = "(206) 555-0157" ; Ok = false }
Ý tưởng rằng thẻA là patten khớp với Thẻ. Chưa kể đến mô hình đơn giản phù hợp ở đây:
let withTrueOk =
list
|> Seq.filter
(function
| { Ok = true} -> true
| _ -> false
)
Vấn đề là:
type Card = { Name : string;
Phone : string;
Ok : bool }
type CardTwo = { Name : string;
Phone : string;
Ok : bool }
let cardA = { Name = "Alf" ; Phone = "(206) 555-0157" ; Ok = false }
cardA bây giờ là loại CardTwo mà tôi đoán đã làm với F # chạy tất cả mọi thứ theo thứ tự.
Bây giờ điều này có thể là một tình huống không thể vì có thể không bao giờ có cơ hội có cùng chữ ký nhận hai loại, nhưng đó là một khả năng.
Đang ghi lại nội dung nào đó chỉ bị giới hạn sử dụng hoặc tôi chỉ nghĩ về điều này?
Bạn đang ghi đè nó - cung cấp cho các yếu tố hồ sơ của bạn để so khớp/khởi tạo ví dụ 'let cardA = {Card.Name =" Alf "; Điện thoại = "(206) 555-0157"; Ok = false} '. – ildjarn
IMHO mutability theo mặc định, thừa kế và thiếu bình đẳng cấu trúc làm cho lớp học nguy hiểm hơn hồ sơ, nhưng bạn không thấy nhiều người phàn nàn về điều đó ;-) –
@MauricioScheffer Thêm vào đó nullability theo mặc định. –