2010-12-14 32 views
11

Mục tiêu-C không hỗ trợ quá tải phương thức.
Tại sao?
Có thể thực hiện được nhưng Apple đã quyết định không triển khai? hoặc nó không thể làm được do tính chất động của Objective-C?Tại sao Objective-C không hỗ trợ quá tải phương thức?

Tôi có ấn tượng rằng quá tải phương thức có thể được thực hiện trên các ngôn ngữ biên dịch (Java, C#) và không thể thực hiện trên các ngôn ngữ thông dịch (Ruby, Python).
Giữ một số sự thật?

Trả lời

26

Sự khác biệt có liên quan ở đây không nằm giữa các ngôn ngữ được biên dịch và diễn giải, nhưng giữa kiểu được nhập tĩnh (Java, C#) và được nhập động (Ruby, Python, Objective-C). Trong một ngôn ngữ được gõ động, nhập thông tin rất thường không được biết cho đến khi chạy. Khi chạy, tất cả các đối tượng được gõ tĩnh là id trong Mục tiêu-C.

Ngoài ra, ý tưởng cốt lõi trong ngôn ngữ OO được nhập động là bạn không nên quan tâm loại đối tượng nào miễn là đối tượng đó phản hồi thư bạn muốn gửi. Vì vậy, quá tải dựa trên loại sẽ bay ngay khi đối mặt với điều đó.

+1

giả thuyết, có thể có ngôn ngữ động được nhập hỗ trợ quá tải phương thức không? hiện một ngôn ngữ như vậy có tồn tại không? – Chiron

+1

Giả thuyết? Chắc chắn rồi; nó thậm chí có thể được thực hiện trên đầu trang của Objective-C ngày hôm nay, nếu bạn muốn đến đó (và nếu bạn muốn hoàn toàn rời khỏi các tiêu chuẩn mã hóa hiện có). Nó thực sự thậm chí sẽ không được "cứng" (đối với một số giá trị của "cứng", anyway). – bbum

+0

Tôi sợ Chuck, tôi không hiểu câu trả lời của bạn. Bạn có thể giải thích những gì bạn đang cố gắng nói không. – Nitish

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