Czy Clojure miał wpływ na protokoły ObjectiveC? Jeśli nie, to jaka jest różnica?Wpływają na to protokoły Clojure'a?
Odpowiedz
Można znaleźć te artykuły i linki ciekawe:
- http://kirindave.tumblr.com/post/658770511/monkey-patching-gorilla-engineering-protocols-in - dotyka objective-c nieco
- http://www.assembla.com/wiki/show/clojure/Protocols - Rich Hickey na motywację dla protokołów
- http://groups.google.com/group/clojure/msg/330c230e8dc857a9 - bogatszy o protokoły i inne takie rzeczy:
Mają takie same nazwy i pojęcia są ze sobą powiązane - jednak protokoły Clojure a bardziej ogólne i mają na celu rozwiązanie "problemu z ekspresją". To video is very interesting to watch.
Protokoły Objective C to bardziej jak interfejsy Java/C# - określają zestaw metod, które może zaimplementować konkretna klasa. Jednak musisz podać te metody w konkretnej klasie, co zwykle oznacza w praktyce, że kontrolujesz kod źródłowy dla rozszerzanej klasy.
protokoły Clojure pozwalają zdefiniować zestaw funkcji, które rozciągają obsłużyć dowolnej klasy w polimorficzny mody, można dostarczyć implementacje oddzielnie, nawet jeśli nie kontrolują klasę jesteś rozciągające.
Przykładem rozszerzenie protokołu Clojure do klasy java.lang.String na przykład (co na pewno nie kontroluje!), A także do zera szczególnej wartości (czyli wartość null):
;; define a protocol with one function
(defprotocol FooProtocol
(foo [this]))
;; extend the protocol to String and nil
(extend-protocol FooProtocol
java.lang.String
(foo [some-string] (str "Called foo on String: " some-string))
nil
(foo [_] "Called foo on nil value"))
(foo "hello")
=> "Called foo on String: hello"
(foo nil)
=> "Called foo on nil value"
- 1. Czy niektóre RewriteCond wpływają na wiele zasad
- 2. Jak ograniczenia ADO.NET DataTable wpływają na wydajność?
- 3. Czy fałszywe pobudki wpływają na Thread.sleep?
- 4. Protokoły IIS 7 Enabled
- 5. Objective-C "prywatne" protokoły?
- 6. możliwe protokoły sieciowe w javascript
- 7. Interfejsy, delegaty i protokoły Objective
- 8. Pamięć wirtualna i wyrównanie - w jaki sposób wpływają na siebie?
- 9. W Mysql, dlaczego nieużywane indeksy wpływają na plan zapytania?
- 10. Czy ograniczenia klucza obcego wpływają na przekształcanie zapytań w Oracle?
- 11. Jak automatyczne @syntezowane ivars wpływają na * prawdziwy * sizeof (MyClass)?
- 12. Czy modalne javascript popup (np. Fancybox) wpływają na roboty indeksujące?
- 13. Czy widoki bazy danych wpływają na wydajność zapytań?
- 14. Centrum wyrównania tekstu, na które wpływają elementy pływające
- 15. W jaki sposób statyczne zmienne składowe wpływają na rozmiar obiektu?
- 16. Dlaczego "The Future of the Future" nie wpływają na wynik?
- 17. Jak ważone krawędzie wpływają na PageRank w siecix?
- 18. Dlaczego + i ~ wpływają na różne połączenia Perla 6?
- 19. Wysokopoziomowe protokoły dla bezprzewodowych gniazd Bluetooth/WiFi?
- 20. OCMock: Wyśmiewające protokoły z wykluczeniem metod opcjonalnych
- 21. Jak rozszerzyć protokoły numeryczne w Clojure
- 22. Wzorce i protokoły projektowe aplikacji serwera klienta
- 23. Dlaczego protokoły internetowe mają mieć sufiks: //?
- 24. Co to są protokoły obsługiwane w ramce External Accessory Framework Iphone
- 25. Protokoły konfiguracji sieci serwerów SQL niedostępne
- 26. Co to są żądania między domenami/ataki z użyciem domen krzyżowych/protokoły z różnych domen.
- 27. Protokoły i zestawy szyfrów SSL/TLS z AndroidHttpClient
- 28. "Protokoły nie mogą być używane z isinstance()" - dlaczego nie?
- 29. protokoły Objective C wymagające realizacji co najmniej jednego zestawu metod
- 30. "Protokoły, domeny i porty muszą się zgadzać" Problemy
Dziękujemy za Twoje linki. –