リテラルとは
Rubyのプログラムに直接記述できる値をリテラルと呼びます。
Rubyのコードでオブジェクトを入力するときは、毎回リテラルを使います。
Rubyのリテラルは以下のような種類があります。
- 文字列
- 数値
- boolean(true,false), nil
- シンボル
- レンジ
- 配列
- ハッシュ
- 正規表現
文字列
文字列は「“”」または「”」で表すことができ、””ではエスケープされた文字が補間されます。
puts( "5足す6は#{5 + 6}")
puts("荻野\nは\n足が\n速い")
puts('荻野\nは\n足が\n速い')
# 出力結果
# 5足す6は11
# 荻野
# は
# 足が
# 速い
# 荻野\nは\n足が\n速い
数値
- 10進数(0dまたは0D)
- 8進数(0oまたは0Oまたは0)
- 16進数(0xまたは0X)
- 2進法(0b または oB)。
- 浮動小数点(num- or numE1)
Ruby はあらゆる種類の整数を使うことができます。
また 1_00 や 10_0 のように、数値の中に ‘_’ を入れることもできます。
puts(300+1_00+10_0 )
puts("16進数-", 0xaa )
puts("8進数-", 0o222 )
puts("10進数-", 0d170)
puts("2進法-", 0b1010)
puts("浮動小数点-", 1.234E1)
puts(aa)
# 出力結果
# 500
# 16進数-170
# 8進数-146
# 10進数-170
# 2進法-10
# 浮動小数点-12.34
# (irb):276:in `<main>': undefined local variable or method `aa' for main:Object (NameError)
boolean(true,false),nil
- true(真)
- false(偽)
- nil
falseとnilは同じ動作をしますが、nilはunknownまたはemptyを表します。
条件文での動きはfalseと同じですが、返される定数はtrueかfalseのみです。
puts(2+3==5)
puts(2+3!=5)
puts(2+3==nil)
# 出力結果
# true
# false
# false
シンボル
ソース上では文字列のように見えるが、内部的には整数として扱われているオブジェクトです。
「:」コロンから始めて書きます。
# シンボル例
:ruby_symbol
puts(:":player_number#{11+1_1}")
# 出力結果
# :player_number22
レンジ
範囲オブジェクトと呼ばれ、範囲開始値から範囲終了値までを含んだ値を表示します。
for i in 3..6 do
puts(i)
end
# 出力結果
# 3
# 4
# 5
# 6
配列
配列はオブジェクトの集まりで、‘[‘と’]‘を使って作成します。
players = ['荻野', '藤原', '中村', '山口', '安田']
puts(players[0])
puts(players[3])
print("負の指数:", players[-3])
puts("[start, count]:", players[0, 3], "\n")
puts("レンジ使います:", players[0..9])
# 出力結果
# 荻野
# 山口
# 負の指数:中村
# [start, count]:
# 荻野
# 藤原
# 中村
# レンジ使います:
# 荻野
# 藤原
# 中村
# 山口
# 安田
ハッシュ
シンボルキーは一度作成すると変更できないので、完全なキーとしてハッシュを作成することができます。
# 構文
{key:value}
hash1 = {"荻野" => 0, "藤原" => 2, "中村" => 8}
hash2 = {荻野:1, 中村:2}
print(hash1.keys, "\n")
print(hash2.keys, "\n")
for i in hash2.keys do
if i==:荻野
print(i, "=>", hash2[i], "\n")
end
end
# 出力結果
# ["荻野", "藤原", "中村"]
# [:荻野, :中村]
# 荻野=>1
正規表現
Rubyの正規表現は、区切り文字があってもなくても作成できます。
# 構文例
/example/ または %r{example}
line1 = "千葉ロッテマリーンズ";
line2 = "パシフィックリーグ";
if ( line1 =~ /千葉(.*)/ )
puts line1
end
if ( line2 =~ %r{リーグ(.*)} )
puts line2
end
if ( line2 =~ /セントラル(.*)/ )
puts line2
else
puts "ありません"
end
# 出力結果
千葉ロッテマリーンズ
パシフィックリーグ
ありません