Skip to content

Commit 4465a82

Browse files
language/operators: 単項演算子と instanceof の優先順位、前置演算子内の代入の結合に関する注記を同期 (#409)
## 概要 php/doc-en@80dfa568 (doc: clarify unary-vs-instanceof precedence and assignment binding inside prefix operators) に追従し、演算子の優先順位に関する注記を2つ追加しました。 ## 翻訳内容 - language/operators/precedence.xml — 単項演算子と instanceof の優先順位、前置演算子内での代入の結合を明確化 1. php/doc-en@80dfa568 追加した注記: - 演算子表の直後 — キャスト演算子と同じ行にある単項演算子 (`~`、`@`、単項の `+`/`-`) は `instanceof` よりも強く結合するが、`!` は弱く結合する。したがって `(int) $x instanceof Foo` は `((int) $x) instanceof Foo` に、 `!$x instanceof Foo` は `!($x instanceof Foo)` にグループ分けされる - `if (!$a = foo())` の注記内 — 代入の左辺は変数でなければならないため、代入は周囲にある 優先順位の高い前置演算子ではなくその変数とグループ分けされる。`clone`、キャスト演算子、 `@`、`~` も同様で、`clone $a = $b` は `clone ($a = $b)` にグループ分けされる 原文の差分は追加のみのため、既存の訳文は変更していません。
1 parent 89aa72b commit 4465a82

1 file changed

Lines changed: 24 additions & 1 deletion

File tree

language/operators/precedence.xml

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<?xml version="1.0" encoding="utf-8"?>
22
<!-- $Revision$ -->
3-
<!-- EN-Revision: a7428462fea1c0387cf5e8473b4c48c3c8ac8c2c Maintainer: mumumu Status: ready -->
3+
<!-- EN-Revision: 80dfa568e602649eb13585bf59a7b6239eddaac3 Maintainer: mumumu Status: ready -->
44
<sect1 xml:id="language.operators.precedence">
55
<title>演算子の優先順位</title>
66
<titleabbrev>演算子の優先順位</titleabbrev>
@@ -305,6 +305,19 @@
305305
</tgroup>
306306
</table>
307307
</para>
308+
<note>
309+
<simpara>
310+
キャスト演算子と同じ行にある単項演算子
311+
(<literal>~</literal>、<literal>@</literal>、および単項演算の
312+
<literal>+</literal>/<literal>-</literal>) は
313+
<literal>instanceof</literal> よりも強く結合しますが、
314+
<literal>!</literal> は <literal>instanceof</literal> よりも弱く結合します。
315+
そのため <literal>(int) $x instanceof Foo</literal> は
316+
<literal>((int) $x) instanceof Foo</literal> とグループ分けされ、
317+
<literal>!$x instanceof Foo</literal> は
318+
<literal>!($x instanceof Foo)</literal> とグループ分けされます。
319+
</simpara>
320+
</note>
308321
<para>
309322
<example>
310323
<title>結合時の評価</title>
@@ -421,6 +434,16 @@ x minus one equals 3, or so I hope
421434
のような式も許します。この場合は <literal>foo()</literal> の戻り値が
422435
<varname>$a</varname> に代入されます。
423436
</para>
437+
<simpara>
438+
これが可能なのは、代入の左辺は変数でなければならず、
439+
そのため代入は、周囲にある優先順位の高い前置演算子ではなく、その変数とグループ分けされるからです。
440+
同じことが、式をオペランドに取る他の前置演算子、
441+
たとえば <literal>clone</literal>、キャスト演算子、<literal>@</literal>、
442+
<literal>~</literal> にも当てはまります。
443+
たとえば <literal>clone $a = $b</literal> は
444+
<literal>(clone $a) = $b</literal> ではなく
445+
<literal>clone ($a = $b)</literal> とグループ分けされます。
446+
</simpara>
424447
</note>
425448
<sect2 role="changelog">
426449
&reftitle.changelog;

0 commit comments

Comments
 (0)