【學習】
pos?
function->
/ ->>
的處理方式,看起來 data 處理上比較有拆分階段 pipeline 的好處吧,明天開始也想用 threading 跟沒有的兩種寫法試試【今日湯底】
You get an array of numbers, return the sum of all of the positives ones.
Example [1,-4,7,12]
=> 1 + 7 + 12 = 20
算出傳入值當中正數部分的加總
(必須通過以下測試)
(ns kata.test
(:require [clojure.test :refer :all]
[kata :refer [positive-sum]]))
(deftest basic-tests
(is (= (positive-sum [ ]) 0))
(is (= (positive-sum [1 2 3 4 5]) 15))
(is (= (positive-sum [1 -2 3 4 5]) 13))
(is (= (positive-sum [-1 2 3 4 -5]) 9))
(is (= (positive-sum [-1 -2 -3 -4 -5]) 0)))
【我的答案】
(ns kata)
(defn positive-sum [xs]
(reduce + (filter #(> % 0) xs))
)
思路:
filter
function,知道第一個參數是想篩選的條件,想到之前用過匿名函式的寫法,可以將 coll 丟進去一個個比較是否 number > 0filter
evaluate 後會 return “lazy sequence”(算是 list),所以可以透過 reduce
把 list 結構內的 data 進行加總【其他人的答案】
(ns kata)
(defn positive-sum
[coll]
(->> coll
(filter pos?)
(reduce +)))