可以在C#中完成以下操作吗?:
var greeting = "Hello" + function ()
{
return " World";
}() + "!";
Run Code Online (Sandbox Code Playgroud)
我想做一些事情(C#伪代码):
var cell = new TableCell { CssClass = "", Text = return delegate ()
{
return "logic goes here";
}};
Run Code Online (Sandbox Code Playgroud)
基本上我想实现某些逻辑的内联作用域,而不是将该块逻辑移动到单独的方法中.
我想做这样的事情:
for(var i=0;i<aList.length;i++)
{
aList[i].doSomething();
sleep(500);
}
Run Code Online (Sandbox Code Playgroud)
当然,javascript中没有睡眠功能所以我尝试了以下内容:
for(var i=0;i<aList.length;i++)
{
setTimeout(function(){
aList[i].doSomething();
},500);
}
Run Code Online (Sandbox Code Playgroud)
但是,现在它说没有定义aList [i].由于匿名函数是一个闭包,它实际上是从外部函数的范围读取aList [i],因此在运行setTimeout中的函数时,i已经发生了变化.
有什么方法可以实现这个目标?
我正在尝试执行以下PHP代码:
$path_hierarchy = // function that returns an array
return array_reduce(
$terms,
function($val1, $val2) use ($path_hierarchy) {
return $val1 || in_array($val2, $path_hierarchy);
}
);
Run Code Online (Sandbox Code Playgroud)
...但是我收到以下PHP错误:
PHP Parse error: syntax error, unexpected ')', expecting '{'
所以,我切换到以下语法:
$path_hierarchy = // function that returns an array
$callback = function($val1, $val2) use ($path_hierarchy) {
return $val1 || in_array($val2, $path_hierarchy);
};
return array_reduce(
$terms,
$callback
);
Run Code Online (Sandbox Code Playgroud)
......这很有效.我不能use在匿名函数的上下文中使用关键字作为另一个函数的参数吗?
我试图在Scala中实现闭包示例,来自Neal Ford在Groovy中的Functional Thinking演示.参见幻灯片#43和44 https://sea.ucar.edu/sites/default/files/Functional_Thinking.pdf
def makeCounter : Unit = {
var localVar = 0
return { localVar += 1 }
}
Run Code Online (Sandbox Code Playgroud)
此代码返回匿名函数.现在我想通过调用这个匿名函数来增加localVar.
我有两个问题:
1.如何调用匿名函数?
2.调用后,如何检查localVar的值是否增加?
首先我尝试了这个 -
val c1 = makeCounter().它抛出以下错误:
错误:Unit类型的makeCounter不带参数
然后我尝试了这个.
val c1 = makeCounter
这没有给出任何错误.仅打印c1:单位=().
然后,
打印(c1)打印(),而c1()给出相同的错误.
我不知道为什么这两个代码片段不会产生相同的结果.在第一个例子中,我创建了一个函数并传递它,在第二个例子中,我编写了一个匿名函数.
function funct() {
$("p").slideUp(1000);
}
$(document).ready(funct());
$(document).ready(function() {
$("p").slideUp(1000);
});
Run Code Online (Sandbox Code Playgroud)
第二个有效,第一个没有.有人可以告诉我为什么吗?
我正在构建chrome扩展,并在我的内容脚本中包含以下代码.pep是一个让事物变得可拖动的图书馆.有趣的是,我的代码适用于案例#2而不是#1.为什么会这样?
看起来第二种情况是使用匿名函数包装函数调用(虽然我不确定为什么之前需要jquery)
//1
$('#square').pep();
//2
$(function($) {
$('#square').pep();
});
Run Code Online (Sandbox Code Playgroud) javascript jquery anonymous-function google-chrome-extension
脚本示例.
function TakeCallback(param, param2, callback) {
var a = param;
var b = param2;
callback(a, b);
}
.... some context ...
TakeCallback("A", "B", function(one, two) {
var scopeA = one;
var scopeB = two;
});
Run Code Online (Sandbox Code Playgroud)
在C#中
public void FuncWithCallback(int param, int param2, Func callback)
{
int myScope = param;
int myScope2 = param2;
callback(myScope, myScope2);
}
.... some context ....
.
.
FuncWithCallBack(10, 100, (x, y) => {
int AnotherScope = x;
int AnotherScope2 = y;
});
.
.
Run Code Online (Sandbox Code Playgroud)
题 …
我想在Kotlin中编写一个匿名的lambda函数,但它看起来并没有将参数传递给它.(它根本没有传递,因为IDE暗示" 永远不会使用 " 变量'name'.)
码:
var name = "Tobias Boon"
println("reverse=" + fun(name: String): String {
var t: String = ""
for(i in name.indices.last downTo 1) {
t += text.subSequence(i - 1, i)
}
return t
})
Run Code Online (Sandbox Code Playgroud)
目前打印: reverse=(kotlin.String) -> kotlin.String
n => +n && [...1e9+''].map(_ => n += 9);
Run Code Online (Sandbox Code Playgroud)
这将打印一个数字数组'n'是数字根.我想通过上面给出的这个函数知道这是怎么做的?
谢谢您的回答
我想在Laravel播种相关表格.我在访问匿名函数中的范围外变量时遇到了问题,我已经为whereHas我的查询定义了"where"条件的方法.
$id = $user->id; // out-of-scope variable
$posts = Post::whereHas('comments', function ($query) {
$query->where('user_id', $id);
})->get();
Run Code Online (Sandbox Code Playgroud)
从技术上讲,我无法访问$id匿名函数.