なんちゃってウェブ系エンジニアの備忘録

某IT企業で働くなんちゃってウェブ系エンジニアが技術やデザインなど役に立ちそうなものなどを備忘録として載せていきます

Ruby 自己学習メモ1

備忘録としていろいろ残しておく。
自分用メモなので分かりづらいかと思いますが、そこはご容赦願いますw

Rubyの標準出力について

Rubyの標準出力として、print,putsが存在する。
大きな違いとしては、改行されるか否かだ。

print
print("おはようございます。")
print("山田太郎くん")

出力結果

おはようございます。山田太郎くん

改行されない。

puts
puts("おはようございます。")
puts("山田太郎くん")

出力結果

おはようございます。
山田太郎くん

とこんな風に改行される。
putsはprintとは違って、行の最後で必ず改行が行われます。
printで改行したい場合は、明示的に"\n"を付加する必要がある。
さらにpという標準出力が存在するようだ。
pメソッドは、オブジェクトの内容を見やすい形で出力してくれる。
デバッグとかに使えそう。

pメソッドより見やすい形式で出力してくれるppというライブラリがあるようだ。

Rubyの変数について

Rubyは型宣言が必須のJavaと違って、宣言せずそのまま変数を代入することができる。
Rubyの変数はいくつかの種類があり、変数名の先頭1文字目の文字種によって種類が決定される。
変数は小文字のアルファベット or "_"が最初に来る名前の変数のみが使え、
その他はエラーとなり使えないってこと。

#!/usr/bin/ruby
box1 = "変数1です"
puts box1
# OK
# 変数1です
123box = "変数123です"
puts 123box
# NG
# syntax error, unexpected tIDENTIFIER, expecting keyword_end

Ifによる条件分岐

他のプログラミング言語と同じようにRubyもIfによる条件分岐が用意されているとのこと。てか当然ですよね。

flg = TRUE
if flg then
  print "flgはtrueです"
else
  print "flgはtrueではありません"
end

trueという値はRubyにおける代表的な真の値なので処理が実行される。
Rubyにおける真の値は、「false」と「nil」以外のすべてになります。

  • 真(falseとnil以外)
  • 偽(falseとnil

このような条件分岐を使ったtrueやfalseのことを擬似変数と呼ぶ。
さらに細かく条件を指定したい時は…

rank = 2
teamName = "オリックス"
if rank == 1 then
 print  "#{teamName}は首位です"
elsif rank <= 3 then
 print  "#{teamName}はAクラスです"
else
 print  "#{teamName}はBクラスです"
end

出力結果

オリックスはAクラスです

特に気を付けたい点として、Rubyは他の言語と違って、elseifを書くところをelsifとなるので留意しておく。

繰り返し処理

Rubyは「for」文や「while」など様々な繰り返し処理があるが、ここは使用頻度が高そうなものを挙げておく。
以下はHelloを5回繰り返して出力する場合です。

while文
num = 0
while num < 5 do
  puts "Hello"
  num +=1
end

PHPJavaみたいにある変数の値に1を加えるというインクリメント演算子ってRubyはないんですよね…
代わりに「num += 1」みたいな書き方ができる。要するに「num = num + 1」と同じ処理ができるってこと。

for文
num = 0
for num in 1..5 do
  puts "Hello"
end
times文
5.times do
  puts "Hello"
end

whileと比べるとこっちのほうがすっきりしてて、可読性も良いですね。
予め繰り返し回数が分かっている場合はtimesを使うなど状況に応じて使い分けたほうが良さそうですね。

さらにeachも存在する。

each文
set = ["オリックス", "ソフトバンク", "楽天", "西武", "ロッテ", "日本ハム"]
set.each do |output|
  puts "output
end

出力結果

オリックス
ソフトバンク
楽天
西武
ロッテ
日本ハム

また、each文で何番目とか確認したい場合は、each.with_indexを使うと良い。
iの初期値は0から始まります。

set.each.with_index(1) do |output, i| 
 puts "#{i}番目は#{output}です" 
end

出力結果

1番目はオリックスです
2番目はソフトバンクです
3番目は楽天です
4番目は西武です
5番目はロッテです
6番目は日本ハムです