问题标签 [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 投票
7 回答
16036 浏览

c++ - C++ 程序员应该使用哪些 C++ 习语?

C++ 程序员应该知道哪些 C++ 习语?

通过 C++ 习语,我的意思是设计模式或做某些事情的方式仅适用于 C++,或者比大多数其他语言更适用于 C++。

为什么要使用成语,成语有什么作用?

0 投票
2 回答
214 浏览

java - 在 Java 中将单个字符转换为字符串的惯用方法是什么?

现在我正在使用以下方法来最小化盒装对象的创建:

这是惯用的方法吗?(恕我直言,感觉有点尴尬。)

0 投票
5 回答
1346 浏览

ruby - Ruby setter 习语

我正在研究一个Chart类,它有一个参数,margin它包含:top:bottom和值。我的第一个选择是制作一个设置器并设置如下值::right:leftmargin

很好,因为它显然是一个 setter,但经过一番思考,我认为它也可能令人困惑:用户可能认为边距仅包含:left:right值,这是不对的。另一种选择是消除=并使其成为普通方法:

使用这种语法,很容易弄清楚发生了什么,但它不是标准的 setter 并且与marginsgetter 冲突。还有另一种选择:

我不知道该怎么想。对我来说,很明显该方法是一个 setter,但是这次我不能通过一次调用来设置多个值,并且 getter 又出现了问题。我对 Ruby 比较陌生,还没有习惯所有的习语。那么,小伙伴们怎么看呢?哪个是最好的选择?

0 投票
5 回答
176 浏览

ruby - 在 ruby​​ 中使用块设置变量

我发现自己在 Ruby 中经常使用类似 PHP 的循环,而当语言的其余部分如此简洁时,我感觉很不对劲。我结束了这样的代码:

我觉得我应该能够做这样的事情

是否有一种“整洁”的方式在 Ruby 中使用块设置变量?

0 投票
9 回答
685 浏览

c++ - 即时推导

有一个不太常见的 C++ 习惯用法,过去我用过几次效果很好。我似乎不记得它是否有一个常用的名称来描述它。

它与mixinsCRTPtype-erasure有点相关,但与这些东西无关。

当您想向一个类添加一些实现,但又不想将它放在该类或它派生的任何类中时,就会发现问题。造成这种情况的一个原因可能是该类可能是继承层次结构的一部分,其中实现应该只发生一次。

暂时不考虑诸如层次结构是否应该具有具体的非叶类,或者在某些情况下是否可以选择虚拟继承等问题,我知道一种解决方案是在派生自的模板类中提供实现它的模板参数。然后,这允许您在创建实例时使用模板,但只能通过指针或对其基之一的引用来使用该对象(从广义上讲,这就是类型擦除的来源)。

一个例子可能是你有一个侵入性的引用计数。您的所有类都派生自 ref count 接口,但您只希望 ref count 本身和 ref count 方法的实现出现一次,因此您将它们放在派生模板中 - 我们称之为ImplementsRC<T>。现在您可以像这样创建一个实例:

我正在掩盖诸如由多个模板化重载形成的转发构造函数等内容。

所以,希望我已经说清楚了这个成语是什么。现在回到我的问题 - 这个成语是否有一个公认的或至少普遍使用的名称?

0 投票
14 回答
126206 浏览

c++ - 何时使用 std::size_t?

我只是想知道我应该使用std::size_tfor 循环和其他东西而不是int?例如:

一般来说,关于何时使用的最佳实践是什么std::size_t

0 投票
6 回答
3918 浏览

python - Python - 检查字符串是否为空的成语,打印默认值

我只是想知道,是否有一个 Python 习惯用法来检查字符串是否为空,如果是则打印默认值?

(上下文是 Django,__unicode__(self)用于 UserProfile 的函数 - 基本上,我想打印名字和姓氏(如果存在),然后打印用户名(如果它们都不存在)。

干杯,维克多

0 投票
5 回答
1093 浏览

python - Python 字符串连接成语。需要澄清。

来自http://jaynes.colorado.edu/PythonIdioms.html

“将字符串构建为列表并在末尾使用 ''.join。join 是在分隔符上调用的字符串方法,而不是列表。从空字符串调用它会连接没有分隔符的片段,这是 Python 的怪癖,而不是一开始很惊讶。这很重要:用 + 构建字符串是二次时间而不是线性时间!如果你学了一个习语,就学这个。

错误:对于字符串中的 s:result += s

右:结果 = ''.join(strings)"

我不确定为什么这是真的。如果我有一些字符串我想加入它们,对我来说,将它们放在一个列表中然后调用 ''.join 对我来说并不直观更好。将它们放入列表不会产生一些开销吗?澄清...

Python 命令行:

A真的是线性时间而B是二次时间吗?

0 投票
4 回答
386 浏览

ruby - 是否有一种惯用的方式来为 Ruby 中的可选参数指定默认值?

是否有更简洁和惯用的方法来编写以下代码,该代码用于为方法指定可选参数(在 params/options 哈希中)的默认值?

我很想把它简化成这样:

几乎可以工作,除了你真的需要使用has_key? :verbose作为条件,而不是仅仅评估params[:verbose],以涵盖当你想要指定'false'值的情况(即,如果你想:verbose => false在这个例子中作为参数传递) .

我意识到在这个简单的例子中我可以很容易地做到:

但是,在我的真实代码中,我实际上有一堆可选参数(除了一些必需的参数之外),我想将可选参数放在 params 哈希中,以便我可以轻松地仅指定(按名称)少数几个我想要的,而不是必须按顺序列出它们(并且可能不得不列出我实际上不想要的那些)。

0 投票
20 回答
70036 浏览

java - Java中的命名参数习语

如何在 Java 中实现命名参数习语?(特别是对于构造函数)

我正在寻找一种类似于 Objective-C 的语法,而不是 JavaBeans 中使用的语法。

一个小的代码示例就可以了。