Can I specify interfaces when I declare a member?Có ngôn ngữ gõ vịt tĩnh nào không?
Sau khi suy nghĩ về câu hỏi này trong một thời gian, điều đó xảy ra với tôi rằng ngôn ngữ tĩnh-vịt có thể thực sự hoạt động. Tại sao các lớp không được định nghĩa trước bị ràng buộc vào một giao diện tại thời gian biên dịch? Ví dụ:
public interface IMyInterface
{
public void MyMethod();
}
public class MyClass //Does not explicitly implement IMyInterface
{
public void MyMethod() //But contains a compatible method definition
{
Console.WriteLine("Hello, world!");
}
}
...
public void CallMyMethod(IMyInterface m)
{
m.MyMethod();
}
...
MyClass obj = new MyClass();
CallMyMethod(obj); // Automatically recognize that MyClass "fits"
// MyInterface, and force a type-cast.
Bạn có biết bất kỳ ngôn ngữ nào hỗ trợ tính năng này không? Nó có hữu ích trong Java hay C#? Về cơ bản nó có thiếu sót không? Tôi hiểu rằng bạn có thể phân lớp MyClass và triển khai giao diện hoặc sử dụng mẫu thiết kế Bộ điều hợp để thực hiện điều tương tự, nhưng những cách tiếp cận đó có vẻ như mã soạn sẵn không cần thiết.
Cảm ơn bạn. Tôi vừa mới bắt đầu học Haskell khoảng một tuần trước và cho đến nay nó có vẻ khá thú vị. Đó là một chút của một đường cong học tập mặc dù - không bao giờ thực sự có vào các ngôn ngữ chức năng trước đây. Dù sao, hệ thống suy luận kiểu của nó rất giống với những gì tôi đang đề cập đến. – Cybis
C# dường như có suy luận Loại. Ví dụ, bài viết này nói về nó. http://www.developer.com/net/csharp/article.php/3601646/Go-Inside-C-30s-Type-Inference-Process.htm –