标签: anonymous-function

如何从匿名表达式中获取值?

为简单起见,请想象以下代码:

我想创建一个Foo:

public class Foo
{
    public string Bar { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

并将其传递给特殊的Html Helper方法:

Html.SomeFunction(f => f.Bar);
Run Code Online (Sandbox Code Playgroud)

其定义为:

public string SomeFunction<TModel, TValue>(this HtmlHelper<TModel> html, Expression<Func<TModel, TValue>> expression)
Run Code Online (Sandbox Code Playgroud)

我想在这个函数中得到Bar的值,但是完全不知道如何得到它.

c# asp.net-mvc lambda anonymous-function

18
推荐指数
3
解决办法
1万
查看次数

如何在Scala中调用方法n次?

我有一个案例,我想调用一个方法n次,其中n是一个Int.在Scala中以"功能"方式有一个很好的方法吗?

case class Event(name: String, quantity: Int, value: Option[BigDecimal])

// a list of events
val lst = List(
    Event("supply", 3, Some(new java.math.BigDecimal("39.00"))),
    Event("sale", 1, None),
    Event("supply", 1, Some(new java.math.BigDecimal("41.00")))
    )

// a mutable queue
val queue = new scala.collection.mutable.Queue[BigDecimal]

lst.map { event =>
    event.name match {
        case "supply" => // call queue.enqueue(event.value) event.quantity times
        case "sale" =>   // call queue.dequeue() event.quantity times
    }
}
Run Code Online (Sandbox Code Playgroud)

我认为关闭是一个很好的解决方案,但我不能让它工作.我也尝试过for-loop,但它不是一个漂亮的功能解决方案.

recursion closures loops scala anonymous-function

18
推荐指数
5
解决办法
1万
查看次数

是否可以在PHP中引用自身内部的匿名函数?

我正在尝试做类似以下的事情:

// assume $f is an arg to the wrapping function
$self = $this;
$func = function() use($f, $ctx, $self){

    $self->remove($func, $ctx); // I want $func to be a reference to this anon function

    $args = func_get_args();
    call_user_func_array($f, $args);
};
Run Code Online (Sandbox Code Playgroud)

是否可以使用相同的函数引用分配给$ func的函数?

php closures anonymous-function

18
推荐指数
1
解决办法
2280
查看次数

C#ToDictionary lambda选择索引和元素?

我有一个字符串string strn = "abcdefghjiklmnopqrstuvwxyz",想要一个字典,如:

Dictionary<char,int>(){
    {'a',0},
    {'b',1},
    {'c',2},
    ...
}
Run Code Online (Sandbox Code Playgroud)

我一直在尝试这样的事情

strn.ToDictionary((x,i) => x,(x,i)=>i);
Run Code Online (Sandbox Code Playgroud)

...但是我一直在得到关于代表的各种错误,没有采用两个参数,以及未指明的参数等.

我究竟做错了什么?

我更喜欢对答案的提示,所以我对下次需要做的事情有精神上的痕迹,但根据Stackoverflow的性质,答案也很好.

c# lambda delegates anonymous-function todictionary

18
推荐指数
2
解决办法
1万
查看次数

Google跟踪代码管理器未加载javascript,错误消息"匿名函数"

我已在我的网站上安装了Google跟踪代码管理器,并使用它将一些Javascript加载到我的网站上.但是,GTM不再加载,我的Javascript没有加载,错误代码不是很有帮助.

这是我网站上的GTM代码:

<!-- Google Tag Manager -->
<noscript><iframe src="//www.googletagmanager.com/ns.html?id=GTM-MFQ99J"
height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
'//www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
})(window,document,'script','dataLayer','GTM-MFQ99J');</script>
<!-- End Google Tag Manager -->
Run Code Online (Sandbox Code Playgroud)

这是我在GTM标签中包含的代码:

<!-- Qualaroo for your website -->
<!-- Paste this code right after the <body> tag on every page of your site. -->
<script type="text/javascript">
  var _kiq = _kiq || [];
  (function(){
    setTimeout(function(){
    var d = document, f = d.getElementsByTagName('script')[0], s = d.createElement('script'); s.type = 'text/javascript';
    s.async = true; s.src = '//s3.amazonaws.com/ki.js/50553/aS-.js';f.parentNode.insertBefore(s, f);
    }, 1); …
Run Code Online (Sandbox Code Playgroud)

javascript anonymous-function google-chrome-devtools google-tag-manager

18
推荐指数
2
解决办法
3万
查看次数

构造函数中的SortedSet <T>和匿名IComparer <T>不起作用

为什么匿名函数作为方法的参数而不是构造函数参数?


如果我创建了一个List<string>,它有一个带有以下签名的Sort方法:

public void Sort(IComparer<T> comparer)
Run Code Online (Sandbox Code Playgroud)

以下工作地点:

List<string> list = new List<string>();
list.Sort( (a,b) => a.CompareTo(b) );
Run Code Online (Sandbox Code Playgroud)

SortedSet有一个具有类似签名的构造函数:

public SortedSet(IComparer<T> comparer)
Run Code Online (Sandbox Code Playgroud)

但是在构造函数中使用匿名函数时会失败.以下内容无效:

SortedSet<string> set = new SortedSet<string>( (a, b) => a.CompareTo(b) );
Run Code Online (Sandbox Code Playgroud)

创建排序类可以正常工作:

public class MyComparer : IComparer<string>
{
    public int Compare(string a, string b)
    { return a.CompareTo(b); }
}

SortedSet<string> set = new SortedSet<string>( new MyComparer() );
Run Code Online (Sandbox Code Playgroud)

.net c# constructor anonymous-function

17
推荐指数
3
解决办法
9788
查看次数

JavaScript:从外部访问匿名函数内的变量

说我有这个匿名功能:

(function(window){

 var private = 'private msg';

 function sayit() {
   alert(private) // works
 }

 document.body.onclick = sayit; // works

})(window);

// private shouldn't be accessible here
Run Code Online (Sandbox Code Playgroud)

这是JavaScript应该如何表现?

也就是说,无法private从该匿名函数之外的任何地方访问?

如果是这样,是否有可能private从外部找到某种黑客攻击,让代码保持原样?

javascript scope anonymous-function

17
推荐指数
2
解决办法
2万
查看次数

Javascript匿名关闭

我已经阅读了很多关于Javascript中的闭包的内容.我在mozilla.org上看到,封闭应该被定义为

(function(){...})();

但在http://www.adequatelygood.com/JavaScript-Module-Pattern-In-Depth.html上,它说封闭功能是

(function(){...}());

有什么区别或后者是错的?last()的目的是什么?你会把一些参数放进去吗?我正在寻找一个很好的参考.

编辑:此外,Mozilla.org上有一个例子

var makeCounter = function() {
var privateCounter = 0;
  function changeBy(val) {
    privateCounter += val;
  }
  return {
    increment: function() {
      changeBy(1);
    },
    decrement: function() {
      changeBy(-1);
    },
    value: function() {
      return privateCounter;
    }
  }  
};
Run Code Online (Sandbox Code Playgroud)

为什么这个'功能'需要分号?如果需要在声明后立即调用,则应在结束分号之前放置a().但事实并非如此.

javascript anonymous-function

17
推荐指数
2
解决办法
9630
查看次数

如何编写通用的匿名方法?

具体来说,我想写这个:

public Func<IList<T>, T> SelectElement = list => list.First();
Run Code Online (Sandbox Code Playgroud)

但我得到一个语法错误T.我不能拥有通用的匿名方法吗?

c# generics anonymous-function

16
推荐指数
2
解决办法
7094
查看次数

如何编写/引用PHP可调用函数易于管理我的IDE

当我必须编写对可调用函数的引用时,我使用PHP的标准语法定义为:

PHP函数的名称作为字符串传递.可以使用任何内置或用户定义的函数[...省略...].

实例化对象的方法作为包含索引0处的对象和 索引1处的方法名称 (aka字符串)的数组传递.

通过传递类名 (仍然是字符串) 而不是索引0处的对象,也可以传递静态类方法而无需实例化该类的对象.

从PHP 5.2.3开始,也可以传递 (字符串) 'ClassName :: methodName'.

除了常见的用户定义函数,匿名函数也可以传递给回调参数.

对于诸如函数名重构查找用法之类的操作,所有这些方式都不是"IDE友好的" .

在我的回答中,我提出了一个解决方案,但是还有其他方法可以应用,甚至是完全不同的,允许IDE"找到"方法的调用?

php ide closures callable anonymous-function

16
推荐指数
1
解决办法
408
查看次数