Dav*_*vid 1 functional-programming clojure
我有这两个功能,并且我在共享卡中使用共享卡到玩家。我是否应该将 share-card-to-player 作为参数传递或将其用作匿名函数?
顺便说一句,我正在使用它,我怀疑我是以函数方式使用它的,因为我基本上引用了一个全局变量,即 function share-card-to-player。这个假设正确吗?
(defn share-card-to-player [game [player cards]]
(assoc-in game [:players player :cards ]
cards))
(defn share-cards [{players :players cards :cards :as game}]
(reduce share-card-to-player game
(map vector
(keys players)
(->> cards
(partition (/ (count cards)
(count players)))))))
Run Code Online (Sandbox Code Playgroud)
我基本上引用了一个全局变量,即函数
share-card-to-player
assoc-in是一个全局变量。/是一个全局变量。count是一个全局变量。你应该避开它们吗?做什么事情都会很难!全局变量的问题是突变,而函数是不可变的。
share-card-to-player如果需要,您可以定义为匿名本地函数。但这样就很好了。仅当您希望在另一个使用站点将另一个函数传递给它时,将其提取为函数参数才有意义。