点数
86点
感想
とてもよかった。 足りない部分もあるが、入門としてはいい本だと思う。
主な内容
コマンドラインでの実行
- ファイルの実行
ruby ファイル名
(Windowsの場合:ruby -Ku ファイル名
) - コードの実行
ruby -e 'puts 100'
- 対話モード
irb
文字列内の式展開
- シングルクォート
展開なし - ダブルクォート
改行コードや#{式}が展開される
例)puts "#{1+1}"
コメント
- 単一行
# - 複数行
=beginと=endで囲む
※複数行コメントは使わないのが慣例
putsメソッドとpメソッド
改行コード付きで出力するメソッド。
- puts
型が意識されない(‘1’は1になる)。
戻り値はnil。 - p
型が意識される。
戻り値は出力内容。
制御文字はそのまま出力。
デバッグ向け。
classプロパティ
型名が格納されている。
例)puts 1.class⇒Integer
データ型
すべてがオブジェクト。
Integer,Float,String,Class,Hash,Array,TrueClass,FalseClass,NilClass
文字列連結
例)puts 'aaa' + 'bbb'
配列
- 定義
arr = ['あい', 'うえ', 'お']
またはArray.new
またはArray.new サイズ
- 追加
arr.push('か')
またはarr << 'か'
- 削除
arr.delete_at(2)
またはarr.delete('お')
ハッシュ
- 定義
arr = {'name' => 'kimura', 'age' => 38}
またはHash.new
- 追加
arr['sex'] = 'man'
またはarr.store('sex', 'man')
- 削除
arr.delete('age')
※キーを指定
キーには文字列ではなくシンボルを使うことも可能
- 定義
arr = {:name => 'kimura', :age => 38}
またはarr = {name: 'kimura', age: 38}
- 追加
puts arr[:name]
- 削除
arr.delete(:name)
メソッドの最後の引数がハッシュの場合は括弧を省略することができる
set_user(first_name: "Taro", last_name: "Yamada")
%記法
配列を省略して定義することができる。
- %w
文字列(%Wは式展開あり) - %i
シンボル(%Iは式展開あり)
例)animals = %w(dog cat)
※カンマ不要、クォーテーションで囲まなくてよい
if文
if num == 1 then
p '1です'
elsif num == 2 then
p '2です'
else
p '1でも2でもないです'
end
- elseifではなくelsifなので注意
- thenは省略するのが慣例
- 条件文が1つの場合は後置if/unlessを使うべき
- !ifではなくunlessを使うべき
case文
case num
when 1 then
p '1です'
when 2 then
p '2です'
else
p '1でも2でもないです'
end
- thenは省略するのが慣例
- 式は文字列でもOK
後置if/unless
処理が1行の場合は、if句を後に書くことができる。
(可読性が上がるので、後置ifを使うべき)
例)puts 'over 100' if num > 100
timesメソッドでループ
Integerクラスのメソッド。
10.times do | i |
puts i
end
# 0〜9が出力される
do~endはブロックに書き換え可能
10.times { | i |
puts i
}
※「オブジェクト.メソッド名」形式の場合のみ
⇒for文やwhile文は不可
eachメソッド
# 配列の場合
[1, 2, 3].each do |val|
puts val
end
# ハッシュの場合
{'name' => 'suzuki', 'age' => 26}.each do |key, val|
puts key + ':' + val.to_s
end
while文
i = 0
while i < 5 do
i += 1
if i == 3
next
end
puts i.to_s + 'です'
sleep 1
end
# doは省略可能
for文
for str in ['あああ', ’いいい', ’ううう’] do
puts str
end
# doは省略可能
upto, downto, stepメソッド
Integerクラスのメソッド。
3.upto(7) do |num|
puts("num = " + num.to_s)
end
3.step(11, 2) do |num|
puts("num = " + num.to_s)
end