任何人都可以解释为什么在下面的代码中,函数的名称在第一部分作为*(乘数)?
(defn bar
([a b] (bar a b 100))
([a b c] (* a b c)))
Run Code Online (Sandbox Code Playgroud)
给bar两个args (bar 2 3)产量(* 2 3 100)
如果您稍微重新格式化它可能更容易看到发生了什么:
(defn bar
([a b] (bar a b 100))
([a b c] (* a b c)))
Run Code Online (Sandbox Code Playgroud)
这是一个具有多个arity的函数 - 也就是说,它接受多个参数集.第一个定义接受一个名为两个参数a和b,和第二个定义接受三个参数命名a,b和c.当调用函数的第一个定义时,它会转向并调用函数的第二个定义,传入给第一个定义的a和b参数,并将常量值100作为第三个参数发送.第二个定义bar简单地采用它给出的三个参数,并将它们相乘(* a b c).
希望这可以帮助.