序列理解得到 运行
sequence comprehensions to get run
下面的代码是我从一本书(Functional Programming Patterns in Scala and Clojure)中找到的。 for语句使用close-zip?过滤掉拉链外的人,然后它会向剩下的人发出问候语。但是,我不太确定人们应该如何作为 generate-greetings
和 print-greetings
函数的参数?
(def close-zip? #{19123 19103})
(defn generate-greetings [people]
(for [{:keys [name address]} people :when (close-zip? (address :zip-code))]
(str "Hello, " name ", and welcome to the Lambda Bar And Grille!")))
(defn print-greetings [people]
(doseq [{:keys [name address]} people :when (close-zip? (address :zip-code))]
(println (str "Hello, " name ", and welcome to the Lambda Bar And Grille!"))))
它们需要是带有 :name
和 :address
键的地图,例如:
{:name "A Person", :address {:zip-code 19103}}
for
将从 people
中取出每个元素并将每个元素分配给 {:keys [name address]}
。这叫做destructuring,只是为了方便。等于说:
(for [person people
:let [name (:name person)
address (:address person)]
:when (close-zip? (:zip-code address))]
(str ...))
下面的代码是我从一本书(Functional Programming Patterns in Scala and Clojure)中找到的。 for语句使用close-zip?过滤掉拉链外的人,然后它会向剩下的人发出问候语。但是,我不太确定人们应该如何作为 generate-greetings
和 print-greetings
函数的参数?
(def close-zip? #{19123 19103})
(defn generate-greetings [people]
(for [{:keys [name address]} people :when (close-zip? (address :zip-code))]
(str "Hello, " name ", and welcome to the Lambda Bar And Grille!")))
(defn print-greetings [people]
(doseq [{:keys [name address]} people :when (close-zip? (address :zip-code))]
(println (str "Hello, " name ", and welcome to the Lambda Bar And Grille!"))))
它们需要是带有 :name
和 :address
键的地图,例如:
{:name "A Person", :address {:zip-code 19103}}
for
将从 people
中取出每个元素并将每个元素分配给 {:keys [name address]}
。这叫做destructuring,只是为了方便。等于说:
(for [person people
:let [name (:name person)
address (:address person)]
:when (close-zip? (:zip-code address))]
(str ...))