2-7 主な組み込みクラス 2-7-1 数値(Numeric)


In [4]:
# 復習
p 1
p Fixnum.ancestors
p Float.ancestors


1
[Fixnum, Integer, Numeric, Comparable, Object, PP::ObjectMixin, Kernel, BasicObject]
[Float, Numeric, Comparable, Object, PP::ObjectMixin, Kernel, BasicObject]
Out[4]:
[Float, Numeric, Comparable, Object, PP::ObjectMixin, Kernel, BasicObject]

In [17]:
# 10進数
p 0d5

# 16進数
p 0xAA

# 2進数
p 0b110

# 大きな数字を見やすくする
p 1_000_000_000

#  アンダースコアはどこでも入るの? ※できるけど、アンチパターン!
p 1_0_0_00_000_0000


5
170
6
1000000000
100000000000
Out[17]:
100000000000

2-7-2 文字列(String) ダブルクォートでは #{...} を用いた式展開ができます。


In [31]:
p 'result:\t#{1+1}'
p "result:\t#{1+1}"

p 'It\'s mine'

paragraph = "99 test, \
99 hoge."
p paragraph

# 上記は使わずに << 演算子を用いる
str = <<-EOS
  1行目
  2行目
EOS
p str

str2 = <<'EOS'
#{foo}\t#{bar}
EOS
p str2

weather = 'rainy'

# 式展開とバックスラッシュ記法は無効
p %q(It's #{weather})
# 式展開できる
p %(It's #{weather})
p %Q(It's #{weather})


"result:\\t\#{1+1}"
"result:\t2"
"It's mine"
"99 test, 99 hoge."
"  1行目\n  2行目\n"
"\#{foo}\\t\#{bar}\n"
"It's \#{weather}"
"It's rainy"
"It's rainy"
Out[31]:
"It's rainy"

2-7-3 シンボル(Symbol)
「:ruby」のように先頭にコロンをつけた文字の並びはシンボルリテラルです。
シンボルは文字列に似ていますが、読み書きのしやすさから「attr_accessor :lenght」のように
識別子やキーワード的な単語を表現するのに適しています。


In [34]:
p :ruby
p :ruby=


:ruby
:ruby=
Out[34]:
:ruby=

2-7-4 配列(Array)
配列はブラケット([])の中に要素となる値をカンマ区切りで記述します。


In [49]:
# 異なる要素を入れる
array = ['Alice', 4423, 3.14, nil, false]
p array
p array[0]

# 配列の要素の取り方
people = ['Alice', 'Bob', 'Carol']

p people[0]
p people[10]
p people[2]
p people[-1]

# 途中に新たな要素を格納
people[2] = 'Hoge'
p people

people[5] = 'Piyo'
p people

# %を使った記法
hoge2 = %w(Alice Bob Hoge)
p hoge2
hoge2 = %w(Alice\ Bob Hoge\ Piyo)
p hoge2

hoge3 = %i(red bule green)
p hoge3


["Alice", 4423, 3.14, nil, false]
"Alice"
"Alice"
nil
"Carol"
"Carol"
["Alice", "Bob", "Hoge"]
["Alice", "Bob", "Hoge", nil, nil, "Piyo"]
["Alice", "Bob", "Hoge"]
["Alice Bob", "Hoge Piyo"]
[:red, :bule, :green]
Out[49]:
[:red, :bule, :green]

2-7-5 ハッシュ(Hash)
ハッシュはいわゆる連想配列です。{ キー => 要素}


In [57]:
colors = {'red' => 'ff0000', 'green' => 'hoge', 'blue' => 'piyo'}

# 要素を参照
p colors['blue']
p colors['black']

# キーはシンボルがよく用いられる
colors2 = {:red => 'ff0000', :green => 'hoge', :blue => 'piyo'}
p colors2[:green]

# 1.9以降では新しいリテラルが追加された。
colors3 = {red: 'ff0000', green: 'hoge', blue: 'piyo'}
p colors3[:blue]


"piyo"
nil
"hoge"
"piyo"
Out[57]:
"piyo"