やってみる

アウトプットすべく己を導くためのブログ。その試行錯誤すらたれ流す。

「プログラム・文・式」を読む

 文は()を使わないとメソッドの引数にできない式の別称である。らしいよ?

成果物

情報源

プログラム・文・式

  • プログラムは式を並べたものです
  • 式は評価されると値が定まり、それを返します
  • 文はメソッドの引数に指定できない式の別称です
      • and/or/not
      • if/unless/rescue修飾式など
    • 括弧によるグルーピングを行うことで式として使用できる

 やっと「プログラム」「文」「式」の定義が出てきた。

  • プログラムは式を並べたものです
  • 式と式の間はセミコロン(;)または改行で区切ります
    • ただし、バックスラッシュに続く改行は文の区切りにならず、次の行へ継続します。
print "hello world!\n"
x=1; y=2;
p x; p y;
x = \
'X'
x = 1 +\
2

文の区切りにならず、

 なぜここにきて式でなく文という語を使うのか。混乱する。式の区切りにならず、でいいのでは?

 Rubyの式には以下のようなものがある。

  • 定数
  • 変数
  • リテラル
  • 演算子
  • 制御構造
  • メソッド呼び出し
  • クラスメの定義
  • ソッドの定義

 さらに以下のような特徴がある。

  • 式は括弧によってグルーピングできる
  • 式は評価されると値が定まり、それを返す
    • ただし、returnbreak, next は値を返さず、評価された時点で制御が移る
  • 空の式 () は nil を返す
  • メソッドの引数に指定できない式と、指定できる式がある
  • 指定できない式を「文」と呼び分ける場合がある
    • and/or/not
    • if/unless/rescue修飾式など
    • 括弧によるグルーピングを行うことで式として使用できる

 ええと、つまりif修飾子をもちいたものは修飾式?というもので、それは「文」と呼ぶことがあるってこと? はぁ? 結局、式なのか文なのか。名前的には式っていっているようだけど?

 ていうか、「if修飾」だよね? いきなり「if修飾」とかいう新しい言葉が出てきたんですけど。言葉の定義がされないまま次々と出てくる。混乱する。

 以下は文ってことでいいの?

p 'OK' if is_ok

 それとも文と式の違いは雰囲気で呼び分けているだけ? そんなに気にしなくていいの?

プログラムの終り

Rubyインタプリタはプログラムを読みこんでいる際に以下のものに出会うとそこで読みこみを終了します。

  • ファイルの終り(文字列をevalしている場合は文字列の終り)
  • D(コントロールD) 、Z(コントロールZ)
  • ENDのみの行(前後に空白があると認識されません)

 あまり意識しなくてよさそう。__END__とかいつ使うの? なんか嬉しいことある?

所感

 Rubyはほぼすべて式。式は値を返すもの。

 それだけ覚えておけば良さそうな気がする。

対象環境

$ uname -a
Linux raspberrypi 5.10.52-v7l+ #1441 SMP Tue Aug 3 18:11:56 BST 2021 armv7l GNU/Linux