Rubyでよく使う基本的なコードについて、使い方をまとめています。
Pythonなどと多言語との主な違いは、puts、ハッシュ、シンボル、eachメソッドの書き方、if式のelsifなどです。共通する部分も多くあります。
拡張子
.rb
出力(putsメソッド)
puts "AAA"
└ 「’」でもOK
└ putsの後に半角スペース必須
コメントアウト(#)
#
文字をつなげる(+)
puts 'AAA' + 'BBB'
└ 数値と文字列の連結は不可
└ 型は統一する(もしくは変数展開)
変数定義
変数名 = 数値
変数名 = '文字列'
自己代入演算子
x=x+10
→ x+=10
x=x-10
→ x-=10
x=x*10
→ x*=10
x=x/10
→ x/=10
x=x%10
→ x%=10
式展開
puts "#{ }"
└ ダブルクオテーション
└ ※シングルクオテーションはそのまま文字列として出力
hello = "こんにちは"
name = "AAA"
puts "#{hello}、#{name}さん"
pythonやphpの変数展開。rubyでは式展開と呼ぶ。
if式(条件分岐)
if 条件式1
処理
elsif 条件式2
処理
else
処理
end
└ elsif
(python:elif, php: else if)
└ 条件式は true/falseに置き換わる
└ falseの場合は処理をスキップ
比較演算子
==
等しい!=
等しくない>
より大きい<
より小さい>=
以上<=
以下
論理演算子
&&
かつ||
または
配列
[要素1,要素2,要素3,,,]
array = ["AAA","BBB","CCC"]
puts array[0]
puts "インデックス番号1の要素は#{array[1]}です。"
#出力
AAA
インデックス番号1の要素はBBBです。
eachメソッド(繰り返し処理)
配列.each do |変数名|
処理
end
└ .each do| |
└ 最後にend
必須
└ 定義した変数名が使えるのはeachメソッドの中のみ
elements = ["AAA","BBB","CCC"]
elements.each do |element|
puts "配列の中身は#{element}です。"
#出力
配列の中身はAAAです。
配列の中身はBBBです。
配列の中身はCCCです。
シンボル
:値
└ シンボル型
└ 文字列の代替として使える
└ ハッシュのキーに使われることが多い
puts "AAA"
puts :AAA
#出力
AAA
AAA
ハッシュ
各値に名前(キー)をつけた配列の呼び名。{キー1=>値1,キー2=>値2, キー3=>値3,,,}
└ 文字列は「”」で囲む(キー、値)
└ 波括弧:{ }
└ 配列にハッシュを代入する
elements = {"key1"=>"A","key2"=>"B", "key3"=>"C"}
puts elements["key2"]
#出力
B
▼他の言語
・pythonの辞書型
{キー1:値1,キー2:値2, キー3:値3,,,}
・phpの連想配列
(キー1=>値1,キー2=>値2, キー3=>値3,,,);
ハッシュ値の更新
ハッシュ["キー名"] = 変更したい値
elements = {"key1"=>"A","key2"=>"B", "key3"=>"C"}
elements["key2"]=222
puts elements["key2"]
#出力
222
ハッシュに要素追加
elements = {"key1"=>"A","key2"=>"B", "key3"=>"C"}
elements["key4"]="D"
puts elements
#出力
{"key1"=>"A","key2"=>"B", "key3"=>"C", "key4"=>"D"}
キーにシンボルを使う
キー名を文字列ではなく、「:」をつけて表せる。:キー名=>値
└ 取得 配列[:キー名]
elements = {:key1=>"A",:key2=>"B", :key3=>"C"}
puts elements[:key2]
#出力
B
シンボルを使った省略形
:キー名=>値
→ キー名:値
└ ※取得時はシンボルを使う
└ 取得 配列[:キー名]
elements = {key1:"A",key2:"B", key3:"C"}
puts elements[:key2]
#出力
B
nil
nil
(ニル)
└ 空の要素
└ nil自体を出力すると空文字になる
nilとハッシュ
- 存在しないキーを指定すると、値はnilになる
- エラーにならない
elements = {key1:"A",key2:"B", key3:"C"}
puts elements[:key4]
puts nil
#出力
nilとif式
if式は条件式がtrueとfalse以外に、nilかそれ以外も使える。
・nil → false
・nil以外 → true
elements = {key1:"A",key2:"B", key3:"C"}
if elements[:key4]
puts "key4の値は#{elements[:key4]}です"
else
puts "key4はありません"
end
#出力
key4はありません
配列とハッシュ
配列の要素にハッシュを入れる
配列の要素にハッシュを入れることができる。
elements = [{order:"A",number:1}, {order:"B",number:2}, {order:"C",number:3}]
elements = [
{order:"A",number:1},
{order:"B",number:2},
{order:"C",number:3}
]
puts elements[0]
#出力
{order:"A",number:1}
配列の中のハッシュの値を取り出す
elements = [
{order:"A",number:1},
{order:"B",number:2},
{order:"C",number:3}
]
#変数に代入して取り出す
element = elements[0]
puts element[:order]
#1行で取り出す
puts elements[0][:order]
#出力
A
A
eachメソッドを使ってハッシュの値を取り出す
配列.each do |変数名|
処理
end
elements = [
{order:"A",number:1},
{order:"B",number:2},
{order:"C",number:3}
]
elements.each do |element|
puts "#{element[:order]}の数字は#{element[:number]}です"
end
#出力
Aの数字は1です
Bの数字は2です
Cの数字は3です
ハッシュ・eachメソッド・if式の組み合わせ
elements = [
{order:"A",number:1},
{order:"B"},
{order:"C",number:3},
{order:"D"}
]
elements.each do |element|
#数字があるかないかを判断
if element[:number]
puts "#{element[:order]}の数字は#{element[:number]}です"
else
puts "#{element[:order]}の数字はありません"
end
end
#出力
Aの数字は1です
Bの数字はありません
Cの数字は3です
Dの数字はありません
Rubyは奥深く同じ処理に対して複数の書き方が存在します。便利でもありますが初心者にとっては混乱を招く原因にもなります。
いろいろな書き方があることを面白がりながら学び続ける根気が必要な言語です。