※何かしらの入門本を一度は読んだという人向け
インデックス
Ruby実行
1.拡張子を「.rb」にして、Rubyファイルを次の内容で作成する(メモ帳でもOK)
test.rb
puts "Hello, World!"
↓
2.コマンドプロンプトを開く
cdで作成したtest.rbがある階層まで移動する
ファイルを実行する
ruby test.rb
文字化けするときは、「-Ku」をつけて実行する
ruby -Ku test.rb
文字出力
1つは既に出てしまったが、基本的にputs、p、printの3つを覚えておけばOK。
putsを基本使っています。
pはデバッグするときに便利です。
printはあまり使わない。
文字列は「’」クオーテーションか「”」ダブルクオーテーションで囲む。ダブルのほうは後述の変数展開が可能。
基本、私はダブルです。
puts "abc"
p "abc"
print "abc"
print "abc" #改行されない
変数
自作の言葉にオブジェクトのタグ付けを行う。
基本
↓
x = "Hello, World!"
y = 123456789
#変数を利用して文字を出力する
puts x
puts y
変数展開する。
↓
x = "Hello, World!"
puts "あいさつは「#{x}」です"
#上記と結果が同じもうひとつの書き方(文字列連結)
puts "あいさつは「" + x + "」です"
後述の配列やハッシュなど多くのオブジェクトを変数にタグ付けすることができます。
配列
配列作成の手段はいくつかありますが、私はメインでこれです。(空配列を作成する)
array = []
array = [
"みかん",
"めろん",
"りんご",
"すいか",
]
puts array
p array
#取得・アクセス
puts array[2] #りんご
#追加
array.push("ぶどう")
puts array
配列eachメソッド
array = ["みかん", "めろん", "りんご", "すいか"]
array.each do |ele|
puts "do~end出力:#{ele}"
end
array.each { |ele| puts "1行出力:#{ele}" }
【よく使う記述】ブロック変数を複数使う
array = [
#タイトル、主演、評価
["MI10", "トーマス・クルーズ", 5],
["バックトゥ", "ミシェル・フォックス", 3],
["アイアンホークス", "ダグ・マスター", 4],
]
array.each do |title, actor, review|
puts "映画タイトルは#{title}です"
puts "主演は#{actor}です"
puts "評価は#{review}です"
end
※ハッシュを使っても同じように書くことができます。
ハッシュ
インデックスが名前
配列は[]、ハッシュは{}
money = { "america" => "ドル", "japan" => "円", "china" => "元" }
puts money["japan"]
Ruby特有のシンボルを使ってできるだけ簡潔に書く
Railsではこの書き方が割と多い気がする。
money = { america: "ドル", japan: "円", china: "元" }
puts money[:america]
※値を取得するときは前置シンボル
ハッシュeachメソッド
国名と通貨単位を一気に出力します。
money = { america: "ドル", japan: "円", china: "元" }
#タグと値が配列として出力される
money.each do |ele|
puts ele
#p ele
end
#変数keyと変数valueに分離できる
money.each do |key, value|
puts "#{key}の通貨単位は#{value}です"
puts "---------------------------"
end
配列にハッシュを入れ子する
前述のダミーデータ使用
array = [
{ title: "MI10", actor: "トーマス・クルーズ", review: 5 },
{ title: "バックトゥ", actor: "ミシェル・フォックス", review: 3 },
{ title: "アイアンホークス", actor: "ダグ・マスター", review: 4 },
]
array.each do |ele|
puts "映画タイトルは#{ele[:title]}です"
puts "主演は#{ele[:actor]}です"
puts "評価は#{ele[:review]}です"
end
if条件分岐
例:「1から10の値を入力し、5と10とそれ以外で処理する。」
※elsifをelseifと書きがちなので注意する。
x = gets
if x == 5
puts "5です"
elsif x == 10
puts "xは10です"
else
puts "xは5と10以外です。"
end
あれ?ってね。
ここでベストプラクティス!
入力された値が何かを確認する。
p x #「\n」がついているね。Windowsなら円マークn
「\n」がついているね。
条件式は「x == 5」
しかも、数字の5。
だから一致しないわけです。
getsは文字列を返すので、数字に変換しないといけない。
「.to_i」メソッドを使うと数字に変換され、なおかつ「\n」を削除される。
正解はこちら
↓
x = gets.to_i
if x == 5
puts "5です"
elsif x == 10
puts "xは10です"
else
puts "xは5と10以外です。"
end