如何发音 "=>",它在 .Net 的 lambda 表达式中使用。
问题的出现的原因:在.NET中使用lambda表达式时,有些开发者不知道如何正确地发音"=>"。这可能导致在代码审查或电话会议等情况下,无法准确地传达lambda表达式的含义。
解决方法:根据Eric Lippert的建议,可以采用以下方式来发音"=>":
- 对于投影操作,例如(Customer c)=>c.Name,可以发音为"customer see becomes see dot name"。
- 对于谓词操作,例如(Customer c)=>c.Age > 21,可以发音为"customer see such that see dot age is greater than twenty-one"。
- 在LINQ团队工作期间,"Goes to"是最常听到的短语。
这些发音方法可以帮助开发者更准确地传达lambda表达式的含义,确保团队成员之间的沟通顺畅。
如何在.Net中使用lambda表达式中发音“=>”?
在你的例子中,p => p.Age > 16读作“P,使得p.Age大于16。”
实际上,我在官方的linq预发布论坛上问了这个问题,Anders Hejlsberg回答说
我通常将=>操作符读作“变成”或“对于”。例如,
Func f = x => x * 2;
Func test = c => c.City == "London";
读作“x变为x * 2”和“c,使得c.City等于London”
至于“goes to”-这对我来说从来没有意义。 'p'没有去任何地方。
在读取代码给别人听的情况下,比如通过电话,只要他们是C#程序员,我会使用“lambda”这个词-也就是说,“p lambda p dot age大于十六。”
在评论中,Steve Jessop提到了在转换的情况下使用“maps to”-所以以Anders的例子为例:
x => x * 2;
将读作
x maps to x times 2.
这似乎比“becomes”更接近代码的实际意图,对于这种情况来说。
这只在lambda被用作过滤器时才准确。
“Goes to”是“填充堆栈帧”的一个不那么尴尬的渲染方式
我真的不喜欢“x变为x * 2”;x是一个输入,在整个过程中保持不变。以这种方式阅读听起来像是一个赋值操作。
哈哈,非常正确。=)安-我倾向于同意,尽管我想不出更好的转换示例。也许是'转换为'?
在这种情况下,我会说“maps to”。那么有一点风险,人们会认为你在谈论一个容器,但你可以通过在第一次说的时候解释清楚,你的意思是“lambda运算符,你知道,等于号大于号”。
我在Adam Freeman的Visual C# 2010和2008年的LINQ in Action中看到过“goes to”。我对此不感兴趣,决定开始将其发音为“for which”。考虑到Hejlsberg是C#的架构师,我很高兴他也选择了这种方式。