如何继承功能选项

菲尔

我编写了此函数,该函数从树中获取元素。就是这样:

(defn at [address tree] (reduce nth tree address))

现在的问题是nth有两个重载。如果索引超出范围,则该异常将引发异常;而另一个则使用not-found参数返回而不是引发异常。

现在,我可以为函数添加一个重载来添加此选项,如下所示:

(defn at [address tree not-found] 
  (reduce (fn [curr-tree index] (nth curr-tree index not-found))
          tree address))

我可能会抱怨如何必须显式地创建一个新函数,而不是单纯地nth使用它。

这不是真正的问题。我不必为每个nth具有的重载都做一个重载

nth只有两个重载,但是在其他时候,我想编写类似包装器的函数时,如何将决策推迟给用户。在这个例子中,我只是包装nth为了保持一致,我想at模仿的行为nth如何继承其他功能的选项?

我是从Clojure的角度提出这个问题,但它可能适用于或可能不适用于其他语言。

Muhuk

为什么要at根据nth的设计进行设计?不管谁打电话at,都不应考虑nth的重载。

at可以通过@amalloy的答案中的函数来传递。但是我建议从更简单的设计开始,然后在需要时进行重构:

(defn at
  ([address tree]
    (reduce nth tree address))
  ([address tree not-found]
    (reduce #(nth %1 %2 not-found) tree address))) 

我的基本原理是传递not-found值比传递函数更容易理解:

(def maybe-x (at addr tree :bummer))

;; See @amalloy's answer
(def maybe-x (at' addr tree #(nth %1 %2 :bummer))))

实际上,如果以后需要传递其他函数,我将创建一个新at-by函数(请参阅group-by)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何继承模板功能?

来自分类Dev

如何检查替补功能的选项

来自分类Dev

如何从被调用的功能文件继承 webdriver 实例?

来自分类Dev

继承与功能

来自分类Dev

如何使带注释的文本样式从theme_set()选项继承

来自分类Dev

如何覆盖功能组件中的导航选项?

来自分类Dev

Wix如何隐藏功能选项(无子功能)

来自分类Dev

zsh 继承 xtrace 选项

来自分类Dev

多重继承/虚拟功能

来自分类Dev

与继承的功能混淆

来自分类Dev

与继承的功能混淆

来自分类Dev

虚拟继承模糊功能

来自分类Dev

如何通过继承向现有功能添加功能

来自分类Dev

如何在Scala中将功能应用于选项列表?

来自分类Dev

如何启用Dropzone选项?autoDiscover打破了Dropzone功能。

来自分类Dev

使用gulp-modernizr如何指定功能选项

来自分类Dev

如何将bluebird并发选项用于地图功能

来自分类Dev

用Foreach代替选项绑定...如何复制“ optionsCaption”功能?

来自分类Dev

如何从Tkinter Notebook触发选项卡更改功能?

来自分类Dev

如何完成具有多个参数/选项的bash功能?

来自分类Dev

数据列表-如何在单击选项上启动功能?

来自分类Dev

jQuery选项卡不活动时如何中断功能?

来自分类Dev

optparse主要功能,如何使用内部选项

来自分类Dev

单击选项卡时如何激活功能?

来自分类Dev

TAB自动完成功能如何找到要完成的选项?

来自分类Dev

如何使用带有循环功能的cheerio传递新选项

来自分类Dev

使用设置 API 提交选项时如何运行附加功能

来自分类Dev

我如何通过单击预选选项来绑定 jquery 功能

来自分类Dev

如何在自定义功能区选项卡(Typescript / Javascript)中启用/禁用选项?

Related 相关文章

热门标签

归档