假设我有一个名为 trig 的函数,它返回两个输出:
function trig(x)
return(sin(x), cos(x))
end
Run Code Online (Sandbox Code Playgroud)
如果我想评估多个值的三角函数,我可以使用 map 函数:
julia> out = map(trig, (0:(pi/12):(pi/2)))
Run Code Online (Sandbox Code Playgroud)
out 是一个 7 元素数组,每个元素中都有一个包含两个元素的元组:
julia> out
7-element Array{Tuple{Float64,Float64},1}:
(0.0,1.0)
(0.258819,0.965926)
(0.5,0.866025)
(0.707107,0.707107)
(0.866025,0.5)
(0.965926,0.258819)
(1.0,6.12323e-17)
Run Code Online (Sandbox Code Playgroud)
我的问题是:解开正弦和余弦的最佳方法是什么,以便我有两个数组,每个数组有 7 个元素?是否可以在不创建多余的元组数组的情况下广播三角函数,而是直接创建我真正感兴趣的两个数组?
目前,我再次调用 map 以便从 out 中提取值以填充我想要的数组,但我认为这不是执行此操作的最佳方法:
sines = map(x->x[1], out)
cosines = map(x->x[2], out)
Run Code Online (Sandbox Code Playgroud)
出于本问题的目的,假设 trig 是一个计算量大的函数。因此,请不要给我一个需要多次评估 trig 的答案。
在《你不知道的 JS:作用域和闭包》一书中,Kyle simpson 指出块作用域变量有助于垃圾回收,具体示例如下:
function process(data) {
// do something interesting
}
{
let someReallyBigData = {};
process(someReallyBigData);
}
var btn = document.getElementById("my_button");
btn.addEventListener("click", function click(evt) {
console.log("Clicked!");
}, false);
Run Code Online (Sandbox Code Playgroud)
现在上面的示例应该有助于垃圾收集,因为someReallyBigData一旦块结束,变量就会从内存中删除,与此示例不同,它对垃圾收集没有帮助:
function process(data) {
// do something interesting
}
var someReallyBigData = {};
process(someReallyBigData);
var btn = document.getElementById("my_button");
btn.addEventListener("click", function click(evt) {
console.log("Clicked!");
}, false);
Run Code Online (Sandbox Code Playgroud)
现在我确信这个人对他提供的例子(第一个)是正确的;var但是,我想知道如果我们使用匿名 IIFE(立即调用函数表达式)以及普通的而不是{}花括号和变量,是否一切都会相同let。让我把它变成一个例子:
function process(data) {
// do something interesting
}
(function(){
var someReallyBigData = {};
process(someReallyBigData);
}()); …Run Code Online (Sandbox Code Playgroud) 我有一个简单的数据框,包含 3 列:name、goal和actual。因为这是更大数据帧的简化,所以我想使用 dplyr 来计算每个人实现目标的次数。
df <- data.frame(name = c(rep('Fred', 3), rep('Sally', 4)),
goal = c(4,6,5,7,3,8,5), actual=c(4,5,5,3,3,6,4))
Run Code Online (Sandbox Code Playgroud)
结果应该是这样的:
我应该能够传递类似于下面所示的匿名函数,但语法不太正确:
library(dplyr)
g <- group_by(df, name)
summ <- summarise(g, met_goal = sum((function(x,y) {
if(x>y){return(0)}
else{return(1)}
})(goal, actual)
)
)
Run Code Online (Sandbox Code Playgroud)
当我运行上面的代码时,我看到以下 3 个错误:
警告消息: 1:在 if (x == y) { 中:条件长度 > 1 并且仅使用第一个元素
我试图使用匿名函数来调用其他两个函数,但无法真正使其工作。我关注了这个问题:Calling Two Functions on same click event with d3.js but still can't get it right。
期望的效果是我的条形图改变条形并同时改变颜色。这就是我正在尝试的:
我想调用的两个函数:
function selectDataset(d) {
let value = this.value;
if (value == "total") {
change(datasetTotal);
} else if (value == "option1") {
change(datasetOption1);
} else if (value == "option2") {
change(datasetOption2);
}
}
function changeColor(d) {
let value = this.value;
if (value == "total") {
d3.selectAll("rect")
.transition()
.duration(2000)
.style("fill", 'blue')
} else if (value == "option1") {
d3.selectAll("rect")
.transition()
.duration(2000)
.style("fill", 'red')
} else …Run Code Online (Sandbox Code Playgroud) 我听说这两个术语,匿名函数和函数句柄被用来指代类似f = @(x) x.^2MATLAB 中的东西。但后来我也听说这些术语含义不同。这两个术语有何不同?
我知道可以使用PHP 5.3(匿名函数)执行以下操作,但在较旧的PHP版本(5.3之前版本)中是否有类似的替代方法?
$exampleArray = array(
'func' => function() {
echo 'this is an example';
}
Run Code Online (Sandbox Code Playgroud)
是否可以使用__call或首先将该函数作为(对象)进行类型转换?此外,我尝试通过给它起一个名字来使函数匿名,但这似乎不起作用.
在我的程序中,我有一个click事件,对许多按钮执行相同的操作,除了每个事件处理函数的一小部分中的类是不同的.现在,我只是使用匿名函数.附加到此事件的功能很长,我预计会有很多按钮(大约60个左右?).我可以复制并粘贴我有60次的当前工作函数,但这将使我的javascript文件变得庞大.
我想做的是在on()函数之外定义事件处理函数,所以我可以说$('#some_button').on('click', my_event_handler("my_arg") );
这将真正简化我的代码.
我做了一个js小提琴,它给出了我正在尝试做的一个非常小的例子:
唯一的问题是,我无法让它发挥作用!
我要去看泰德,当我回来时,试试你的解决方案.
非常感谢您为我提供的任何帮助!
我试图在匿名函数中加载谷歌地图,但每当我尝试使用其中一种api的方法时,我都会收到javascript错误.例如:
码
var mapOptions = {
zoom: 8,
center: new google.maps.LatLng(-34.397, 150.644),
mapTypeId: google.maps.MapTypeId.ROADMAP
};
Run Code Online (Sandbox Code Playgroud)
错误
TypeError: google.maps.LatLng is not a constructor
Run Code Online (Sandbox Code Playgroud)
我创建了两个例子:
1)这通过页面正文中的脚本标记加载谷歌地图js.这种方法有效,没有js错误. http://jsfiddle.net/malonso/hgPQk/1/
2)这将在匿名函数中加载google map js w /.此方法不起作用,并包含上面提到的js错误.http://jsfiddle.net/malonso/fZqqW/2/
我确信我错过了一些明显的东西,但我根本无法弄清楚是什么.提前致谢.
更新:我应该指出,要求在匿名函数中加载谷歌地图.
注意:这主要是理论实践.
function one() {
return [1, function() { one(); }];
}
console.log((one()[1])());
Run Code Online (Sandbox Code Playgroud)
输出给出undefined.为什么?
以下可能有点无意义,但为什么下面的第一个调用工作而第二个调用失败?
var foo = function bar() {
console.log("Martini");
}
foo(); // works
bar(); // undefined; i.e. "Uncaught ReferenceError: bar is not defined"
Run Code Online (Sandbox Code Playgroud)
那与范围有关吗?
推论初学者的问题:函数定义"解析" - 但实际上是有效的语法 - 并且是否存在命名指定的匿名函数有意义的任何上下文?