Bir dize alan ve bir filtre işlevi sonucu döndüren bir işlev yazmaya çalışıyorum (4clojure sorunları ile çalışıyorum). Sonuç da bir dizi olmalı.Clojure işlevi, filtre işlevinin sonucundan bir dize oluşturmakta başarısız oluyor
ben yazdım:
Şimdi(fn my-caps [s]
(filter #(Character/isUpperCase %) s))
(my-caps "HeLlO, WoRlD!")
Result: (\H \L \O \W \R \D)
Böyle katılmak/clojure.string kullanarak, bu listenin dışında bir dize oluşturmak için çalışıyorum: Sonuç
(fn my-caps [s]
(clojure.string/join (filter #(Character/isUpperCase %) s)))
ancak aynıdır. Ayrıca hiçbir başarı ile apply str
kullanmayı denedim.
Teşekkürler! Bu bana çift ok-threading makroyu gösterdi. Daha önce iş parçacığı makrolarını bilmiyordum. –
@ntalbs, neden '- >>' operatörünü burada kullanıyorsunuz? Basit bir işlev çağrısı, 'apply' –
@ ÓscarLópez'i çağırmak için yeterlidir Evet, haklısınız. Sonuç aynı. Bununla birlikte, '- >>' kullanarak kod okumayı okumayı ve düşünce sürecimden yazmayı kolaylaştırır. Bu kadar. Bu bir tür kişisel tercihler. – ntalbs