156
|
Christopher Edwards · 技术社区 · 16 年前 |
![]() |
1
150
我在读那个运算符时通常会说“这样”。 在您的示例中,p=>p、 年龄>16读作“P,因此P.年龄大于16岁。”
至于“去”,这对我来说从来没有意义p'哪儿也去不了。 在通过电话向某人读代码的情况下,只要他们是C#程序员,我就用“lambda”这个词——也就是说,“p lambda p dot age大于16。”
这看起来确实比本例中的“变成”更接近代码的实际意图。 |
![]() |
2
60
从…起 MSDN :
|
![]() |
3
19
|
![]() |
4
15
我一直称之为“王操作员”:-) “p王p大于16岁的年龄” |
![]() |
5
7
|
![]() |
6
7
我使用“goes to”是因为LINQ的书告诉我:) |
![]() |
7
5
“地图到”怎么样?与其他备选方案相比,它既简洁又可以说在技术上更准确(即,没有关于“去”或“变成”的状态变化的建议,没有集合与其特征函数的合并,比如“这样那样”或“为了什么”)。虽然如果已经有了MSDN页面所暗示的标准,也许你应该遵循它(至少对于C#代码)。 |
![]() |
8
3
“Maps to”是我最喜欢的发音。从数学上讲,函数将其参数“映射”到其返回值(人们甚至可以称函数为“映射”),因此在编程中使用这个术语对我来说是有意义的,特别是函数编程(特别是lambda演算)非常接近数学。它也比“变成”、“转到”等更中性,因为它并不意味着状态的改变,正如contextfree所提到的。 |
![]() |
9
2
我没有想太多,但我只是简明扼要地说“去”。它简短明了,并暗示变量已传递 到
|
![]() |
10
2
我的简短回答是:“c’lambda of’e”。虽然我坚持使用“lambda'c'函数'e”,但我认为lambda是一种普世的妥协。分析如下。
对于通过电话讲述代码,您希望有人能够按顺序写下代码。这当然是一个问题,但lambda arrow或其他东西可能是你能得到的最好的,或者可能是lambda in,但lambda of是最准确的。
这可能是一个过度约束的问题! 我不会使用“这样那样”,因为这意味着右侧是左侧应该满足的谓词。这与讨论右手边非常不同,左手边被抽象为一个函数参数。(MSDN关于“所有lambda表达式”的声明既无礼又不准确。)
由于在目前使用的情况下,左侧始终是一个简单的标识符[但等待稍后可能会混淆这一点的扩展],因此我认为对于“c=>表达式”,我将阅读“c'lambda function'expression”甚至“c'arg''function'expression”。在最后一个例子中,我可以说“b'arg'c'arg''function'expression”。 最好更清楚地说明正在引入lambda表达式,并使用类似于“'arg'b'arg'c'function'expression”的语句。 找出如何将所有这些翻译成其他语言是学生的一项练习[;<]。
在所有这些思考之后,我注意到我开始将“c=>e”翻译为“lambda'c'函数'e”,并注意到到到精确形式的映射是由上下文理解的:c(e),c=>e、 f 哪里 f(c)=e等。 我希望“去”的解释会占上风,因为这是占主导地位的大多数人第一次看到lambda表达式。真遗憾。一个好的妥协可能是“c” 兰姆达 “e” |
![]() |
11
2
如果将lambda表达式想象为匿名方法,“goes to”就足够有意义了。
n“转到”表达式n==String.Empty。 它转到匿名方法,因此您不必转到代码中的方法!
老实说,我不喜欢在脑子里用“去”这个词,但我看到其他人说这看起来很奇怪,我想我应该澄清一下。 |
![]() |
12
2
生产运算符(“=>”)左侧的值列表提供用于调用此函数的堆栈帧的结构和内容。可以说,值列表提供了参数声明和传递的参数;在更传统的代码中,它们确定用于调用函数的堆栈帧的结构和内容。 结果,这些值“转到”表达式代码。您更愿意说“定义堆栈帧”还是“转到”?:) 在用作过滤条件的布尔表达式的狭义定义应用中(该问题的其他答案广泛考虑的lambda表达式的主要用途),为了代码的目的而跳过该方法是非常合理的,这会导致“for which”同样简洁,并更多地说明代码的含义。 然而,lambda表达式并不是Linq的唯一领域,在此上下文之外,应该使用更一般的形式“goes to”。 因为“填充以下代码的堆栈框架”太长,不能一直这么说。我想你可以说“是/是传递给”。 显式传递的参数和捕获的变量(如果我没记错,请纠正我的错误)之间的一个关键区别是前者通过引用传递,后者通过值传递。 |
![]() |
13
1
|
![]() |
14
1
在Ruby中,这个sybmol被称为“hashrocket”,我听说C#程序员也使用这个术语(尽管这样做是错误的)。 |
![]() |
15
0
我的两分钱:
“参数为s的Lambda表达式为{
=>只是一个快捷方式,因此您不必使用delegate关键字并包含类型信息,因为它可以由编译器推断。 |
![]() |
16
0
我的任期=>如应用于示例所示,结果如下所示
x,其中x乘以2
c其中c.city相当于“伦敦”
其中n是一个空字符串 |
![]() |
shortCircuit77 · 抽象类有选择地公开基于派生类型的方法 2 年前 |
![]() |
Sellyme · 用“0”减去字符以转换为int是错误的做法吗? 7 年前 |
![]() |
graczun · 字段名作为关键字的Java约定[closed] 8 年前 |
![]() |
Wylliam Judd · 如何按条件排除未使用的案例[已关闭] 9 年前 |
![]() |
lmiguelvargasf · 斯威夫特:后卫让vs如果让 9 年前 |
![]() |
Jarmund · 调用私有方法的层次结构时,哪个方法应该更改字段? 10 年前 |
![]() |
PuercoPop · 为什么有些人在循环宏中的子句中使用关键字? 10 年前 |
|
KDrago · 对Visual Studio NewB的建议。重用现有类库? 11 年前 |