Ruby入門メモ(1)
Rubyistに紹介していただいたO'Reilly本『初めてのプログラミング 第二版』を通読してから、いつも通りドットインストールの「Ruby入門」を視聴した。
環境
標準出力 print、puts、p
print "hello world!(print)" # 改行なし puts "hello world!(puts)" # 改行あり、puts:ぷっとえす p "hello world!(p)" # オブジェクトの内容を文字列で出力
実行結果
hello world!(print)hello world!(puts) "hello world!(p)"
pメソッド
オブジェクトの内容を表示できるので、開発時に便利。
x = "1" # 文字列 y = 1/3r # 分数 z = [100, 50, 80] # 配列 puts x p x puts y p y puts z p z
実行結果
1 "1" 1/3 (1/3) 100 50 80 [100, 50, 80]
コメントアウト
print "hello world!(print)" # 一行のみのコメントアウト =begin 複数行にわたるコメントアウト puts "hello world!(puts)" p "hello world!(p)" =end
変数と定数
変数
変数名の先頭文字は小文字
msg = "hello world!"
定数
定数名の先頭文字は大文字
- 通常、定数名はすべて大文字にする
- 定数は値の変更が不可
ADMIN_EMAIL = "hoge@gmail.com"
数値オブジェクト
各演算子はNumericクラスで定義されている。
整数、浮動小数点数、分数
puts 10 # 整数 puts 5.12 # 浮動小数点数 puts 1/3r # 分数 puts Rational(1,3) # 分数のもう一つの書き方
実行結果
10 5.12 1/3 1/3
よく使う演算子
puts 4 + 5 # 加算 puts 8 - 10 # 減算 puts 0.01 * 2 # 乗算 puts 10 / 3 # 除算 puts 10 % 3 # 剰余 puts 2 ** 3 # べき乗
実行結果
9 -2 0.02 3 1 8
アンダーバー
_
(アンダーバー)を無視する性質があるので、金額の区切りなどに利用するとよい。
x = 100_000_000
実行結果
100000000
文字列オブジェクト
"
(ダブルクォーテーション)と'
(シングルクォーテーション)で処理が異なる。- ダブルクォーテーションを使った場合の変数展開には、
#{}
を使用する。
例1
x = "hello world!" # 特殊文字(\n:改行、\t:タブ)や変数を展開できる y = 'hello world!' name = "ponkiti" x = "hello world!, #{name}" y = 'hello world!, #{name}' # こちらはすべて文字列 puts x puts y
実行結果
hello world!, ponkiti hello world!, #{name}
例2
z = "hello\nworld\t!" # タブと改行 puts z
実行結果
hello world !
例3
puts "AAA" + "BBB" # +:連結 puts "hello" * 5 # *:繰り返し
実行結果
AAABBB hellohellohellohellohello
破壊的メソッド
コアリファレンスの「Methods」を参照すると、!
や?
がついている同じ名前のメソッドがある。
http://www.ruby-doc.org/core-2.1.3/String.html
通常のメソッド
s = "ponkiti" puts s.upcase # 普通のメソッド puts s # upcaseメソッドを使わない場合、小文字に戻る
実行結果
PONKITI ponkiti
破壊的メソッド
元データも書き換える場合、破壊的メソッドを使う。
s = "ponkiti" puts s.upcase! # 破壊的メソッド puts s
実行結果
PONKITI PONKITI
真偽値を返すメソッド
s = "ponkiti" puts s.empty? #false s = "" puts s.empty? #true
実行結果
false true
型変換
例1
整数型と文字列型の変数同士を計算することはできない。
Perlの場合は実行時にコンテキストを解釈して計算式に合わせて型を変換してくれるわけだけれど、Rubyの場合は型を明示してやらなければならないらしい。書く側で意識するのはバグの元が減るからいいことだと思う。
a = 10 b = "5" p a + b #エラーとなる
実行結果
sample.rb:3:in `+': String can't be coerced into Fixnum (TypeError) from sample.rb:3:in `<main>'
例2
異なる型同士を計算させるには、型をそろえる必要がある。
a = 10 b = "5" p a + b.to_i # to_i:整数に変換 (10 + 5) p a + b.to_f # to_f:浮動小数点数に変換 (10 + 5.0) p a.to_s + b # to_s:文字列に変換 ("10" + "5")
実行結果
15 15.0 "105"
参考
- 公式サイト https://www.ruby-lang.org/ja/
- コアリファレンス http://www.ruby-doc.org/
- 『初めてのプログラミング 第二版』
- 『パーフェクトRuby』