2010-12-14 19 views
11

Amaç-C, aşırı yükleme yöntemlerini desteklemiyor.
Neden?
Mümkün mü, ancak Apple bunu uygulamadı mı? veya Objective-C'nin dinamik doğası nedeniyle mümkün değil mi?Neden Objective-C yöntemi aşırı yüklemeyi desteklemiyor?

Yöntem aşırı yüklemesinin derlenmiş diller (Java, C#) üzerinde yapılabildiği ve yorumlanmış dillerden (Ruby, Python) yapılamadığı izlenimim var.
Bazıları doğru mu?

cevap

26

Burada alakalı olan ayrım, derlenmiş ve yorumlanmış diller arasında değil, statik olarak yazılan (Java, C#) ve dinamik olarak yazılanlar arasında (Ruby, Python, Objective-C). Dinamik olarak yazılan bir dilde, çalışma zamanı, çalışma zamanına kadar genellikle bilinmemektedir. Çalışma zamanında, tüm nesneler Objective-C'de id olarak yazılmıştır. Ayrıca, dinamik olarak yazılmış OO dillerindeki bir temel fikir, göndermek istediğiniz iletilere yanıt verdiği sürece bir nesnenin ne tür bir karakter taşıdığıyla ilgilenmemenizdir. Yani türüne göre aşırı yükleme, bunun tam karşısında uçardı.

+1

varsayımsal olarak, yöntem aşırı yüklenmesini destekleyen dinamik olarak yazılan bir dile sahip olmak mümkün mü? şimdi böyle bir dil var mı? – Chiron

+1

Varsayımsal olarak? Emin; Eğer oraya gitmek istiyorsanız (eğer mevcut kodlama standartlarından tamamen ayrılmak istiyorsanız), bugün bile Objective-C üstüne yapılabilir. Gerçekten "o kadar zor" bile olmazdı (yine de "sert" bazı değerler için). – bbum

+0

Korkarım Chuck, cevabını anlamadım. Ne söylemeye çalıştığını açıklar mısın lütfen? – Nitish

İlgili konular