あらかじめ決められた(複雑な)処理を行なってくれるものを メソッドという。メソッドはRuby言語にあらかじめ備わっているもの もあるし、(自分を含めた)誰かが作るものもある。
最初のプログラムによく出てきた printf
もメソッド
のひとつである。メソッドを呼び出すときは
何に対して.どうする(必要な情報)
という形にする(ピリオドに注目)。
「どうする」の部分がメソッド名(たとえば
printf
)に相当する。「何に対して.」と「必要な情報」は
必要ないメソッドもある。
メソッド名の直後に与える「必要な情報」のことを 引数(ひきすう)という。
何かを入力して結果を出力するプログラムを作るために最低限 必要なメソッドを以下に示す。
場所.gets
- 文字列の入力
指定された場所から文字列を読み込んでその値を返す。
「場所.」を省略するとRubyプログラム起動時に
与えたファイルから読み込む。起動時にファイルを与えない
場合は標準入力から読み込む(次講:
getsへのデータの与え方で詳説)。
文字列の末尾は必ず改行文字が入る。改行文字は
"\n"
で表す。
使用例:
foo = STDIN.gets
上の例は、標準入力(次講で説明)から読み込んだ文字列をfoo
変数に代入している。
文字列.chomp
文字列の末尾が改行文字('\n'
)
である場合にそれを切り取る。改行文字でなければなにもしない。
使用例:
line = gets.chomp
上の例は、標準入力から1行読み込んで得た文字列の
末尾から改行文字を除去した文字列を作成し、line
変数に代入している。
chomp
は、元の文字列のコピーを作って
そこから末尾の改行文字をとったものを返す。chomp
と
ほぼ同じメソッドにchomp!
がある。
chomp!
は、元の文字列のコピーを取らず直接改行をはぎ取って
その結果の文字列を返す。
文字列.to_i
文字列 を整数に変換した値を返す。
使用例:
hoge = "123" x = hoge.to_i
文字列 "123"
をそれに対応する数値に変換した結果
123を返し、xに代入している。
gehogeho = gets k = gehogeho.to_i
標準入力から読んだ文字列をそれに対応する正数に変換し、 kに代入している。
accum.rb
のプログラムの各行の働きの
説明を付けたのが以下のリストである。
#!/usr/koeki/bin/ruby
# -*- coding: utf-8 -*-
sum = 0 # sum変数を0とする
while true # 対応するendまでをひたすら繰り返す
STDERR.print "足したい数(終了は q): "
line = gets.chomp # 数値を入力させ line 変数に代入
if line == "q" then # 入力したものが "q" ならば…
break # whileループを抜ける
end # ifでの場合分けはここで終わり
sum += line.to_i # lineを整数に直したものを sum に加算
printf("これまでの合計は %d です\n", sum)
end # whileに対応するend
printf("合計は %d です\n", sum)
各行にある#
記号より後ろの部分がその行で行なっ
ている内容の説明文である。あらかじめ予想したものと比べ、個々のメソッドの
役割を再確認しよう。
なお、#
記号以降の部分をコメントという。プログラムの
実行に影響を与えないので自由な文を書くことができる。
分かりやすい注釈を入れながらプログラムを作る習慣を付けよう。