通常我的功能结构相同:
(defn func-name
([] (some actions))
([ar] (some actions))
([ar aar] (some actions)))
通常只有一个变体是public
。但正如您从我的参赛作品中看到的那样 - 由于使用public
代替defn
,我的所有功能都是defn-
。但defn-
隐藏所有功能,包括所有重载。
有没有办法'隐藏'只有部分重载功能?
例如,我想隐藏一个带有一个和两个参数的arity的func-name。
Ofcorse我可以隐藏一个defn
内的重载函数,如下所示:
(defn awesome[]
(let [func (fn some-func ([] (some actions))
([ar] (some actions)))]
(func)))
但我认为这有点乱,我确信必须有办法解决它。
谢谢!
答案 0 :(得分:3)
据我所知,此可见性由var $trigger = New-ScheduledTaskTrigger `
-Once `
-At (Get-Date) `
-RepetitionInterval (New-TimeSpan -Minutes 5) `
-RepetitionDuration ([System.TimeSpan]::MaxValue)
中的:private
标志定义。所以这两个表达式是相同的:
meta
所以我认为你只能控制整个(defn ^:private foo [] "bar")
(defn- foo [] "bar")
的可见性。
我可以建议为公共和私人空间使用不同的函数名称。 I.e var
用于公开,func-name
用于私有。