我有这样的功能
(cl-defun foo (a b c d e &rest f)
nil)
参数c、d和e占nil时间的80%。
为了使它看起来更好,我这样做:
(cl-defun foo (a b &rest f &key c d e &allow-other-keys)
nil)
如果没有提供c、d和e,就可以了。
但是,如果使用其中之一,f就会得到一个错误的参数。例如:
(foo 1 2 :c 6 3 4 5)
;; ==> expected: a=1, b=2, c=6, f= (3 4 5)
;; ==> real case: a
用三种语言编写一个程序,它是一个多字形语言,播放岩纸剪刀。
程序的任何版本的输入始终是字符串rock、paper或scissors之一。
在第一语言中,程序必须输出比输入更好的岩石剪刀选择:
Input Output
rock paper
paper scissors
scissors rock
在第二种语言中,程序必须输出连接输入的岩石剪刀选择:
Input Output
rock rock
paper paper
scissors scissors
在第三种语言中,程序必须输出输掉输入的岩石剪刀选择:
Input Output
如果不使用以下模式的闭包,我发现很难编程:
function outerFunction(input) {
var closureVar = "I'm here with ";
function innerFunction() {
return closureVar + input;
}
return innerFunction();
}
outerFunction('outer input'); // I'm here with outer input
这对我来说很有意义。outerFunction定义了inner