はのちゃ爆発

はのちゃが技術ネタとか日常のこととかを書いてます。

Ruby学習記 その1 Ruby入門

Rubyは前から何度か触ったことがあるのですが、
勉強してもあまり使わず身についていないので、今一度勉強しなおし。
気になったところ、多言語と大きく違うところなどを中心にまとめます。

画面への出力

どんなプログラミング言語でも最初に行うのは画面への出力。
Rubyでは基本的な出力用メソッドが3つあるようです。

  • print
  • puts
  • p

printは名前の通り、画面に出力対象のオブジェクトを出力する。
ただし改行などはせず、入力したものがそのまま出力される。

putsはprintと違い、改行を行うタイプの出力。

pは上記2つとは少し異なり、主にデバッグ用に使われる出力。
表示対象のオブジェクトによって出力形式が変わるとのこと。


メソッドの使い方

Ruby以外の言語(例えばC#)だと、

Console.WriteLine("Hello, World!");

みたいに、メソッド名のあとには()が必要なのが一般的な気がします。

が、Rubyでは

print("Hello, Ruby!")

も、

print "Hello, Ruby!"

でもいいらしい。慣れるまで戸惑いそうな文法である。

というか今気づいたけど、行末の";"もないのね。なんか違和感がすごい。


文字列の扱い

Rubyにおける文字列の扱いですが、基本的には""、もしくは''で囲むと文字列として扱われるのは他の言語と同じ。

""で囲んだ場合はエスケープシーケンスが処理される(\nとか\tとか)。

''で囲んだ場合は、囲まれた中の文字列がそのまま出力される。
ただしバックスラッシュそのものとシングルクォーテーションは\\,\'のようにしないといけない。


いろいろな文字列の出力のしかた

print "output test."

のような書き方が基本ですが、

print "output ", "test."

のような書き方もできる。

変数を出力する際の方法は大きく分けて二通り。

print "str1 is ", str1, "."

のように","で繋げる方法。わかりやすい。

もう一つの方法として、

print "str1 is #{str1}."

のような書き方もある。なれたらこっちの方が直感的かもしれない。

条件分岐

if ~ then, else

基本形は以下。

if int1 == 1 then
    任意の処理
else
    任意の処理2
end

thenは省略可能らしく、

if int1 == 1
    任意の処理
else
    任意の処理2
end

とも書ける。then無しのほうが多言語のif文に近い…?

while

基本形は以下。

while i < 10 do
    任意の反復処理
end

doは省略可能。このdoは無い方がわかりやすい気もするが好みか。

times

あまり馴染みのない反復処理の書き方だが、簡易forみたいなものだろうか。
基本系は以下。

10.times do
    任意の反復処理
end

繰り返し回数が決まっている場合はこれ。
もちろん繰り返し回数の指定部分は変数にもできる。
なお、doは省略不可。

コメント

コメントの書き方は重要なので絶対に押さえておく。

# test comment

i = 10

=begin
area
comment
test.
=end

puts i

#を使うと、その行の#以降がコメントとして扱われる。
また、範囲コメントは=beginと=endで囲む。
なお、範囲コメントの=beginと=endは両方とも行頭になくてはならず、
行中の一部だけをコメントアウトするようなことはできないらしい。