ponkiti's blog

主に自分用、イベント参加メモや備忘録として利用

Ruby入門メモ(1)

初めてのプログラミング 第2版

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

f:id:pyoonn:20141009231237p:plain

通常のメソッド

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"

参考