代码之家  ›  专栏  ›  技术社区  ›  awrigley

lambda符号和逻辑比较

  •  0
  • awrigley  · 技术社区  · 14 年前

    lambda符号

    x => x.MyProperty
    

    容易被某些人混淆,大于或等于。工业工程

    if (x => y) ...
    

    问题是:编译器是否会混淆这些内容?也就是说,如果一个人采用一种惯例,即大于或等于总是被编码为:

    if (x >= y) ...
    

    我想编译器可以根据上下文区分这两者,但是什么是“最佳实践”?

    关于这样的问题

    ASP.NET MVC2 Checkboxes in a table

    有点显示出很容易出错。

    编辑:

    鉴于这场暴风雨已经形成,下面可能会澄清。

    我问这个问题是因为我回答了一个问题,那家伙把lambda符号打错了。我指出了他的打字错误,他接受了我的回答。上面的问题有一个链接。

    然后这个问题使我很困惑。我一直使用>=并没有什么好的理由,但我确信我见过使用其他符号的代码。有时候,你会有一些你不想提问的假设。它可能来自我的VBA时代,也可能不是,但我仍然坚信我看到过编译、运行和使用=>进行大于比较的代码。就这样吧。我很抱歉没有“启动vs”,但我已经在一个没有vs安装的办公室里与SiteFinity一起工作了一整天。没有借口,我同意。

    但请注意,C中的lambda表达式的历史只有…NET 2?或者是.NET 3.5。考虑到我从1.0版开始就一直使用C on和off,这个问题是错误的,但没有那么荒谬。

    我也认为,严格的规则是伟大的,因为他们产生了原始的问答。但有不同的方式应用规则。我从9月中旬开始就一直在认真地使用它,所以我认为最好是对坏问题开一枪警告,而不是一有机会就猛拉膝盖。这就是我们所鼓励的:发表评论,而不仅仅是引发愉快的降价。你让提问者有机会意识到他们的错误,并从系统中删除一个毫无意义的问题。因为一旦答案和投票大量涌入,提问者就不能删除这个问题。

    咆哮结束。

    3 回复  |  直到 13 年前
        1
  •  15
  •   SLaks    14 年前

    if (x => y) 是无效代码。

    比较运算符( x >= y x <= y 必须有 <> 之前 = 符号。

    因此,编译器(或面向细节的人)不可能混淆它们。

        2
  •  3
  •   Markos    14 年前

    =>是lambda运算符

    磨碎机或同等设备=

    我不认为这是混淆的,因为它们不能互换。

        3
  •  3
  •   LarsH    14 年前

    编译器是否会混淆这些内容?

    不,在C(我在看标签) >= 总是比较; => 始终是lambda表达式。有 no => comparison operator in C# .

    我想编译器可以区分 两者之间基于上下文

    编译器不需要上下文来区分这两者;请参见上文。

    也就是说,应该通过一个惯例吗? 其中大于或等于 始终编码为:

    如果(x>=y)…

    是的,因为这是编译器接受它的唯一方法。-)

    关于人为错误,我认为以下助记法有帮助:

    • 我们几乎总是说“大于或等于”,而不是“等于或大于”。
    • 数学符号将“大于”或“小于”放在“或等于”的线上。这可以很自然地转换成从左到右的顺序。
    • 用于c中lambda表达式的符号看起来像一个箭头,指向返回值的表达式。它可以被认为是“收益率”。