今回は汎用性の高い文法についてまとめていきます。
目次
・三項演算子について
・擬似変数について
・case文について
・ヒアドキュメントについて
・Rangeオブジェクトについて
【三項演算子について】
三項演算子とは「条件式?式1:式2」という記述で表される演算子のこと条件式に一致する場合は「式1」、条件式に一致しない場合は「式2」を結果とします
example_1.rb
a = true
# aがtrueである場合は1、そうでない場合は2を結果とする
a = true ? 1 : 2
# aを出力
p a
# aはtrueであるため1が出力される
=> 1
【擬似変数について】
擬似変数
…特定の状況で特別な意味を持つ変数のこと。
変数名 | 内容 |
---|---|
true | TrueClassのインスタンス |
false | FalseClassのインスタンス |
nil | NillClassのインスタンス |
self | 現在のオブジェクト |
__FILE__ | 現在実行しているプログラムのファイル名 |
__LINE__ | 現在実行しているプログラムの行番号 |
__ENCORDING__ | 現在のソースファイルのスクリプトエンコーディング |
※Rubyにおいては「nil」と「false」のみが「偽」を示す。
【case文について】
if文の条件が多くなった場合など、「elsif」を乱用するよりも case文を用いて記述した方が可読性が高くなるexample_2.rb
case <式>
when <条件式1> [then]
when <条件式2> [then]
...
else
end
example_3.rb
case 1
when 1 then
p 1
end
=> 1
-------------------------------
# 先に当てはまった条件文に分岐して実行される
case "abc"
when "abc"
p 1 # 実行される
when "abc"
p 2 # 実行されない
end
=> 1
-------------------------------
# 変数bにcase a の結果を格納して結果を出力する
a = 10
b = case a
when 1 then
1 # 実行されない
else
2 # 実行される
end
p b
=> 2
【ヒアドキュメントについて】
ヒアドキュメント
…複数行の文字列を簡単に記述するための構文。
主にスクリプト言語やプログラミング言語で使用され、
通常の文字列リテラルと違い、途中で改行や特殊文字を気にせずに
複数行のテキストをそのまま書くことができる。
考え方としては「指定した識別子までの文字列を1つのリテラルとして扱う」といったもの。
SQLなどの直書きが行える。
example_4.rb
# ヒアドキュメントは終端を示す識別子の前にはスペースを記述してはいけないため「-」を使用する
query = <<-SQL
select *
from my_table;
SQL
query
=> "select * \n from my_table;\n"
【Rangeオブジェクトについて】
範囲リテラル
…特定の範囲内の連続した値を表現するために使用される構文で、
数値や文字列、日付などの範囲を簡潔に表現できる。
example_5.rb
# 「..」の場合は「以下」を表す。「...」の場合は「未満」を表す。
1 .. 10 # 1から10以下の範囲
"a" .. "z" # aからz以下の範囲
1 ... 10 # 1から10未満の範囲
上記のように生成した値は、範囲オブジェクトと呼ばれる。
範囲オブジェクトはinclude?メソッドを用いて、引数で指定した値が範囲に含まれているかどうかが判定ができる。
範囲オブジェクトでは===演算子も用いることができる。
ただし、「==」は同値判定、「===」は包含判定となる。