Ruby代码块与JavaScript匿名函数的区别

6
我正在参加我的第一个实习,进展顺利,我正在努力跟上其他程序员的谈话。一位资深程序员告诉我,Ruby直接传递代码块到函数中的能力比在JavaScript中使用匿名函数要好得多。据我了解,JS匿名函数实际上是完全相同的东西 - 仅通过变量将代码块作为参数传递。是否有代码块参数优于匿名函数的真实世界示例?还是只是一种语言优于另一种的偏好,代码可读性/可重用性问题,或者我只是误解了其他基本概念?这是关于使用哪种语言执行某些任务的简短对话,并不是具体的工作问题,这也许是我被困惑的原因。我谷歌了几个代码块的幼稚例子,在JS中实现它们没有太大的问题。期待您对此问题的任何观点(无论是匿名的还是其他的)。

1
你正在寻找可重复使用的东西。然而,如何使用那段代码完全取决于程序员或工作组/开发团队所应用的规则。本质上,两者都旨在实现相同的结果。Lambda(匿名)函数只是使用快速和短的函数回调的选项。在JavaScript中,它们似乎经常从更大的代码块中使用。只要你知道你在调用中只会使用那个小函数一次,你可能会选择lambda而不是给函数自己的空间(可重复使用)。 - user1467267
1
关于 Ruby,你是指像这样的东西吗:def meth1; yield if block_given?; end; meth1 { puts 42 } - Darek Nędza
@DarekNędza 是的。具体来说,是那种代码块,而不是lambda或其他类型的代码块。 - ialexander
1个回答

5

这是一篇真正奇妙的阅读!“这种印象,我承认在我作为 Ruby/JavaScript 开发人员的早期日子里有过,错过了一个重要的微妙之处,结果具有重大影响。这个微妙之处通常被称为“坦纳特对应原则”。简而言之,坦纳特对应原则说:“对于给定的表达式 expr,lambda expr 应该是等价的。”" 谢谢! - ialexander
这实际上是确切的答案。已接受。我正忙着阅读博客 ;> - ialexander
@wormtown 你不需要更多的东西吗? - Darek Nędza
@DarekNędza 不用了,谢谢。phoet给出了我正在寻找的确切答案。这就是两者之间的确切区别。 - ialexander
我的理解是,随着ECMA的最新版本,这个说法不再正确了,我理解的对吗? - RJM

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接