この文書の現在のバージョンと選択したバージョンの差分を表示します。
両方とも前のリビジョン 前のリビジョン 次のリビジョン | 前のリビジョン | ||
ch_syntax [2020/07/11 05:15] klab [タイマーによる実行] |
ch_syntax [2020/07/11 05:22] (現在) klab [中置記法] |
||
---|---|---|---|
ライン 107: | ライン 107: | ||
中置記法とメッセージ送信記法のもう1つの違いは、中置記法の中では名前は変数を表す、ということである。これに対し、メッセージ送信記法の中では直接変数を書けるのは「!」の左側だけであり、「!」の右側では名前はメソッド名として扱われる。したがって、パラメータなどで変数を指定したい場合は「(…)」で囲む必要がある(囲んだ中は中置記法にできるため)。たとえば、中置記法の「x+y」をメッセージ送信記法で書くと「x!(y)足す」になるが、この「(y)」は丸かっこの中に(「!」がないため)中置記法が書かれているものとして扱われている。 | 中置記法とメッセージ送信記法のもう1つの違いは、中置記法の中では名前は変数を表す、ということである。これに対し、メッセージ送信記法の中では直接変数を書けるのは「!」の左側だけであり、「!」の右側では名前はメソッド名として扱われる。したがって、パラメータなどで変数を指定したい場合は「(…)」で囲む必要がある(囲んだ中は中置記法にできるため)。たとえば、中置記法の「x+y」をメッセージ送信記法で書くと「x!(y)足す」になるが、この「(y)」は丸かっこの中に(「!」がないため)中置記法が書かれているものとして扱われている。 | ||
- | 中置記法の中で使える演算子としては、**+**(足す)、**-**(引く)、*****(掛ける)、**/**(割る)、**%**(余り)がある(かっこ内はメソッドとして使うための名称)。このほか、比較演算子**==**(eq)、**!=**(ne)、**>**(gt)、**>=**(ge)、**<**(lt)、**<=**(le)もある。 | + | 中置記法の中で使える演算子としては、**+**(足す)、**-**(引く)、*****(掛ける)、**/**(割る)、**%**(余り)がある(かっこ内はメソッドとして使うための名称)。このほか、比較演算子**==**(eq)、**!=**(ne)、**>**(gt)、**>=**(ge)、**<**(lt)、**<=**(le)もある。 |
また、中置記法の中では関数記法が使える。たとえば、「sqrt(2)」は「2!sqrt」の略であり、そのほか任意のパラメータなしのメソッド「オブジェクト!メソッド」を「メソッド(オブジェクト)」の形で書くことができる。 | また、中置記法の中では関数記法が使える。たとえば、「sqrt(2)」は「2!sqrt」の略であり、そのほか任意のパラメータなしのメソッド「オブジェクト!メソッド」を「メソッド(オブジェクト)」の形で書くことができる。 | ||
ライン 148: | ライン 148: | ||
「!」の前に何もないときは、そのメソッドを持っているオブジェクトが指定されているものとして扱われる。また、特別な名前「自分」もメソッドを持っているオブジェクトを指定するのに使うことができる。従って上の例は「自分!…」のように書いてもよい。 | 「!」の前に何もないときは、そのメソッドを持っているオブジェクトが指定されているものとして扱われる。また、特別な名前「自分」もメソッドを持っているオブジェクトを指定するのに使うことができる。従って上の例は「自分!…」のように書いてもよい。 | ||
- | {{:pasted:20180103-210342.png?500}} | + | {{:pasted:20180103-210342.png?450}} |
ブロックは1つの式であり、最後に評価した式の値をブロック全体の値として返す。メソッドから値を返したいときはこれを利用する。上の例では、最後に評価されるのはメソッド「歩く」なので、それが返した値、つまりかめた自身が「曲がって動く」の返す値となる。そこで引き続きかめたに対するメソッド「横の位置?」を呼び出してそのX座標を調べているわけである。 | ブロックは1つの式であり、最後に評価した式の値をブロック全体の値として返す。メソッドから値を返したいときはこれを利用する。上の例では、最後に評価されるのはメソッド「歩く」なので、それが返した値、つまりかめた自身が「曲がって動く」の返す値となる。そこで引き続きかめたに対するメソッド「横の位置?」を呼び出してそのX座標を調べているわけである。 |