Skip to content

Commit 33146eb

Browse files
author
ci-build
committed
[skip ci] Update site
1 parent dc20f28 commit 33146eb

File tree

1 file changed

+28
-1
lines changed

1 file changed

+28
-1
lines changed

index.html

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -807,6 +807,7 @@ <h1>Ruby Style Guide</h1>
807807
<li><a href="#top-level-methods">Top-Level Methods</a></li>
808808
<li><a href="#no-single-line-methods">No Single-line Methods</a></li>
809809
<li><a href="#endless-methods">Endless Methods</a></li>
810+
<li><a href="#ambiguous-endless-method-defintions">Ambiguous Endless Method Definitions</a></li>
810811
<li><a href="#double-colons">Double Colons</a></li>
811812
<li><a href="#colon-method-definition">Colon Method Definition</a></li>
812813
<li><a href="#method-parens">Method Definition Parentheses</a></li>
@@ -4505,6 +4506,32 @@ <h3 id="endless-methods"><a class="anchor" href="#endless-methods"></a><a class=
45054506
</div>
45064507
</div>
45074508
<div class="sect2">
4509+
<h3 id="ambiguous-endless-method-defintions"><a class="anchor" href="#ambiguous-endless-method-defintions"></a><a class="link" href="#ambiguous-endless-method-defintions">Ambiguous Endless Method Definitions</a></h3>
4510+
<div class="paragraph">
4511+
<p>Keywords with lower precedence than <code>=</code> can appear ambiguous when used after an endless method definition. This includes <code>and</code>, <code>or</code>, and the modifier forms of <code>if</code>, <code>unless</code>, <code>while</code>, and <code>until</code>. In these cases, the code may appear to include these keywords as part of the method body, but instead they actually modify the method definition itself.</p>
4512+
</div>
4513+
<div class="paragraph">
4514+
<p>In this cases, prefer using a normal method over an endless method.</p>
4515+
</div>
4516+
<div class="listingblock">
4517+
<div class="content">
4518+
<pre class="rouge highlight"><code data-lang="ruby"><span class="c1"># bad</span>
4519+
<span class="k">def</span> <span class="nf">foo</span> <span class="o">=</span> <span class="kp">true</span> <span class="k">if</span> <span class="n">bar</span>
4520+
4521+
<span class="c1"># good - using a non-endless method is more explicit</span>
4522+
<span class="k">def</span> <span class="nf">foo</span>
4523+
<span class="kp">true</span>
4524+
<span class="k">end</span> <span class="k">if</span> <span class="n">bar</span>
4525+
4526+
<span class="c1"># ok - method body is explicit</span>
4527+
<span class="k">def</span> <span class="nf">foo</span> <span class="o">=</span> <span class="p">(</span><span class="kp">true</span> <span class="k">if</span> <span class="n">bar</span><span class="p">)</span>
4528+
4529+
<span class="c1"># ok - method definition is explicit</span>
4530+
<span class="p">(</span><span class="k">def</span> <span class="nf">foo</span> <span class="o">=</span> <span class="kp">true</span><span class="p">)</span> <span class="k">if</span> <span class="n">bar</span></code></pre>
4531+
</div>
4532+
</div>
4533+
</div>
4534+
<div class="sect2">
45084535
<h3 id="double-colons"><a class="anchor" href="#double-colons"></a><a class="link" href="#double-colons">Double Colons</a></h3>
45094536
<div class="paragraph">
45104537
<p>Use <code>::</code> only to reference constants (this includes classes and modules) and constructors (like <code>Array()</code> or <code>Nokogiri::HTML()</code>).
@@ -8358,7 +8385,7 @@ <h2 id="spread-the-word"><a class="anchor" href="#spread-the-word"></a><a class=
83588385
</div>
83598386
<div id="footer">
83608387
<div id="footer-text">
8361-
Last updated 2024-07-18 06:13:35 UTC
8388+
Last updated 2024-10-16 09:47:20 UTC
83628389
</div>
83638390
</div>
83648391
</body>

0 commit comments

Comments
 (0)