تجهيز أزواج من القيم من اثنين من سلاسل في كلوجر
سؤال
وأنا أحاول أن ندخل في المجتمع كلوجر. لقد تم العمل كثيرا مع بيثون، واحدة من السمات I استفادة واسعة من هو الأسلوب البريدي ()، لبالتكرار عبر أزواج من القيم. هل هناك طريقة (ذكية وقصيرة) لتحقيق نفس الشيء في كلوجر؟
المحلول
وهناك طريقة أخرى هي ببساطة استخدام خريطة جنبا إلى جنب مع بعض من وظيفة التي تقوم بجمع حججها في تسلسل، مثل هذا:
user=> (map vector '(1 2 3) "abc")
([1 \a] [2 \b] [3 \c])
نصائح أخرى
(zipmap [:a :b :c] (range 3))
-> {:c 2, :b 1, :a 0}
وبالتكرار عبر خرائط يحدث زوجيا، على سبيل المثال مثل هذا:
(doseq [[k v] (zipmap [:a :b :c] (range 3))]
(printf "key: %s, value: %s\n" k v))
والمطبوعات:
key: :c, value: 2
key: :b, value: 1
key: :a, value: 0
تم الإجابة على السؤال، ولكن لا يزال هناك interleave
، الذي يعالج أيضا عدد التعسفي من متواليات، ولكن لا مجموعة تسلسل مما أدى إلى الصفوف (ولكن يمكنك استخدام partition
لذلك).
لا تنتمي إلى StackOverflow