问题标签 [idioms]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
2665 浏览

ruby - 用于使用命令行选项的 ruby​​ 习语

我正在尝试通过移植一个中型(非 OO)perl 程序来学习 ruby​​。我的个人习惯之一是设置如下选项:

在 perl 中,我有点咬紧牙关,让 $opt_v (有效地)成为一个全局变量。

在红宝石中,或多或少精确的等价物是

其中 $opt_verbose 是类可以访问的全局变量。让班级知道这样的全局标志似乎......呃......错误。这样做的OO惯用方式是什么?

  • 让主程序处理所有与选项相关的东西,让类只返回它决定如何处理的东西?
  • 类是否实现了可选行为(例如,知道如何变得冗长)并通过 attr_writer 之类的东西设置模式?

更新:感谢建议 optparse 的答案,但我应该更清楚的是,这不是如何处理我要询问的命令行选项,而是更有效地设置全局程序状态的命令行选项和类之间的关系理想情况下应该独立于那种事情。

0 投票
8 回答
1822 浏览

ruby - 是否有教程教授经验丰富的程序员使用的常见 Ruby 编程习语,但对新手可能不明显?

我正在寻找 Ruby 的等价物Code Like a Pythonista:Idiomatic Python

理想的功能:

  • 易于阅读
  • 涵盖所有主题的单一文档:提示、技巧、指南、警告和陷阱
  • 尺寸小于一本书
  • 成语应该为标准分布开箱即用 ( % sudo apt-get install ruby irb rdoc)

如果可能,请为每个答案提供一个教程,并附上教程中的示例代码及其含义。

更新:

这些是我遇到的最接近上述描述的资源:

0 投票
12 回答
682 浏览

language-agnostic - 你如何写一个(简单的)变量“切换”?

鉴于以下成语:

1)

p>

2)

p>

3)

p>

4)

p>

你更喜欢哪个?为什么?

我们假设最常见的执行路径condition是错误的。

我倾向于学习使用 1),尽管我不确定为什么我更喜欢它。

注意:以下示例可能更简单——因此可能更具可读性——但并非所有语言都提供这种语法,并且它们不适合将变量赋值扩展为将来包含多个语句。

0 投票
2 回答
1310 浏览

coldfusion - ColdFusion:从列表中选择第一个非空值

在 JavaScript 中,您可以这样做:

并且 'result' 将获得 'b' 的值,因为 JavaScript 短路了 'or' 运算符。

我想要一个单行习语在 ColdFusion 中做到这一点,我能想到的最好的方法是:

谁能做得比这更好?

0 投票
2 回答
5302 浏览

ruby - Ruby中哈希成语的哈希?

在 Ruby 中创建散列的散列允许方便的二维(或更多)维查找。但是,插入时必须始终检查第一个索引是否已存在于哈希中。例如:

最好在自动创建新哈希的情况下执行以下操作:

同样,在查找第一个索引不存在的值时,如果返回 nil 而不是接收未定义的“[]”错误方法会更好。

可以创建一个具有此行为的 Hash 包装类,但是否存在用于完成此任务的 Ruby 习语?

0 投票
9 回答
12107 浏览

c# - 在事件声明中添加匿名空委托有缺点吗?

我已经看到一些关于这个成语的提及(包括在 SO 上):

好处很明显 - 它避免了在引发事件之前检查 null 的需要。

但是,我很想知道是否有任何缺点。 例如,它是否被广泛使用并且足够透明以至于不会引起维护头痛?空事件订阅者调用是否有明显的性能影响?

0 投票
22 回答
76003 浏览

ruby - “零或零”的最佳红宝石成语

我正在寻找一种简洁的方法来检查一个值,看看它是零还是零。目前我正在做类似的事情:

但这似乎很笨拙。

0 投票
4 回答
140 浏览

c++ - 检查列表和运行处理程序

我发现自己编写的代码看起来很多:

我最终编写此代码的原因是我只需要运行第二个循环中的函数一次,即使我收到了多个可能导致它们运行的​​关键代码。

这似乎不是最好的方法。有没有更简洁的方法?

0 投票
5 回答
290 浏览

.net - .NET 是否消除了各种语言之间的区别?

我们总是有更适合在特定场景中使用的语言。对于快速原型开发,VB6 是一个显而易见的选择。在具有简单桌面用户界面和标准且不复杂的数据库交互要求的项目中选择了 VB6。如果您想使用低级例程开发设备驱动程序,您可能依赖于 C 或 Visual C++。ASP 是开发 Web 界面的标准选择。粗略地说,每种语言都有特定的“领域”或“专业化”。

使用 .NET 框架,所有语言都可以互操作并且可能是一致的。您可以拥有一个项目,其中包含来自不同语言的模块,但最终都被相当相似地对待(都被编译为 IL)。

这是否意味着我们之前的区别不再存在?这种差异不一定是坏事,而是设计上存在的,而不是由于任何限制。随着 .NET 框架及其对各种语言的处理,这显然有所减少。

0 投票
3 回答
1567 浏览

ruby - 编写一个 ruby​​ 命令行应用程序;最好的方法是什么?

我有一个正在开发的命令行 Ruby 应用程序,我想允许它的用户提供将作为过滤器运行在部分流程上的代码。基本上,应用程序这样做:

  1. 读入一些数据
  2. 如果指定了过滤器,则使用它来过滤数据
  3. 处理数据

我希望过滤过程(步骤 2)尽可能灵活。

我的想法是,用户可以提供一个 Ruby 文件,该文件设置一个已知常量以指向实现我定义的接口的对象,例如:

然后,我的应用程序代码将执行以下操作:

虽然这可行,但感觉很俗气,似乎应该有更好的方法来做到这一点。我还考虑让过滤器采用将已知名称的方法添加到已知类的形式,但这似乎也不太正确。

Ruby中有更好的成语吗?