2015-03-23 19 views
5

Tôi đang viết loại F # và tôi đang gặp khó khăn khi tìm hiểu cách tham chiếu hàm thành viên từ hàm tạo khi khởi tạo. Tôi nghĩ rằng tôi là nghĩa vụ phải sử dụng một ràng buộc, nhưng sau đó làm ràng buộc không thể hiểu được các chức năng thành viên. Không có cách nào xung quanh điều này?F # gọi hàm thành viên trong hàm tạo

Trả lời

12

Bạn có thể làm theo cách này:

type MyClass() as this = // Note as this 

    do this.SayHello() 

    member this.SayHello() = 
     do printfn "Hello from constructor!" 

Nhưng nói chung nó không phải là một thực hành tốt

+1

Cảm ơn. Nó hoạt động như bạn đã hứa, nhưng tại sao nó không thực hành tốt? – user3685285

+8

Giả sử rằng phương thức này sử dụng các trường hoặc thành viên lớp khác chưa được khởi tạo hoặc phụ thuộc vào một số tài nguyên phụ (tệp, kết nối, v.v.) có thể chưa sẵn sàng. Trong trường hợp này, bạn sẽ nhận được ngoại lệ thời gian chạy khi xây dựng. Nếu bạn đưa vào xem xét những thứ thừa kế có thể trở nên tồi tệ hơn. – Petr

+0

Điểm tốt. Cảm ơn! – user3685285

Các vấn đề liên quan