Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 24 additions & 1 deletion language/operators/precedence.xml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: a7428462fea1c0387cf5e8473b4c48c3c8ac8c2c Maintainer: mumumu Status: ready -->
<!-- EN-Revision: 80dfa568e602649eb13585bf59a7b6239eddaac3 Maintainer: mumumu Status: ready -->
<sect1 xml:id="language.operators.precedence">
<title>演算子の優先順位</title>
<titleabbrev>演算子の優先順位</titleabbrev>
Expand Down Expand Up @@ -305,6 +305,19 @@
</tgroup>
</table>
</para>
<note>
<simpara>
キャスト演算子と同じ行にある単項演算子
(<literal>~</literal>、<literal>@</literal>、および単項演算の
<literal>+</literal>/<literal>-</literal>) は
<literal>instanceof</literal> よりも強く結合しますが、
<literal>!</literal> は <literal>instanceof</literal> よりも弱く結合します。
そのため <literal>(int) $x instanceof Foo</literal> は
<literal>((int) $x) instanceof Foo</literal> とグループ分けされ、
<literal>!$x instanceof Foo</literal> は
<literal>!($x instanceof Foo)</literal> とグループ分けされます。
</simpara>
</note>
<para>
<example>
<title>結合時の評価</title>
Expand Down Expand Up @@ -421,6 +434,16 @@ x minus one equals 3, or so I hope
のような式も許します。この場合は <literal>foo()</literal> の戻り値が
<varname>$a</varname> に代入されます。
</para>
<simpara>
これが可能なのは、代入の左辺は変数でなければならず、
そのため代入は、周囲にある優先順位の高い前置演算子ではなく、その変数とグループ分けされるからです。
同じことが、式をオペランドに取る他の前置演算子、
たとえば <literal>clone</literal>、キャスト演算子、<literal>@</literal>、
<literal>~</literal> にも当てはまります。
たとえば <literal>clone $a = $b</literal> は
<literal>(clone $a) = $b</literal> ではなく
<literal>clone ($a = $b)</literal> とグループ分けされます。
</simpara>
</note>
<sect2 role="changelog">
&reftitle.changelog;
Expand Down
Loading