pyo*_*yon 1 language-features programming-languages functional-programming code-injection homoiconicity
我编写了以下函数作为我正在开发的jQuery插件的一部分:
$.fn.append2 = function(collection, callback) {
var $this = this;
$.each(collection, function(key, value) {
$this.append(callback ? callback(key, value) : value);
});
return this;
};
Run Code Online (Sandbox Code Playgroud)
在测试了一个高度依赖的高度递归函数之后.append2,我优化.append2了:
$.fn.append2 = function(collection, callback) {
var $this = this;
$.each(collection, callback
? function(key, value) { $this.append(callback(key,value)); }
: function(key, value) { $this.append(value); }
);
return this;
};
Run Code Online (Sandbox Code Playgroud)
虽然这个代码在速度方面更有效,但它仍然让我不满意.基本上,我有两次定义相同的函数:
function(key, value) { $this.append(callback(key,value)); }
function(key, value) { $this.append(value); }
Run Code Online (Sandbox Code Playgroud)
我想知道是否有任何语言可以让我只定义一次函数:
function(key, value) { $this.append(value); }
Run Code Online (Sandbox Code Playgroud)
然后通过将参数替换为$this.appendfrom value来对其进行操作callback(key, value).(并且,不,不是通过操纵字符串.通过操纵函数本身.)
有没有这样的编程语言?
任何同性语言都可以让你在某种程度上做到这一点.所有的Lisp语言都允许您从程序上逐个地构建函数,然后像往常一样调用它们.在木卫一的语言是如此罕见,我相信它会让你走另一条路:给定一个功能,你可以拉开它的源代码,并操纵它.