#はじめに
Rubyでコードを書いていると、:
や::
がよく出てきますが、
いまいちはっきりと理解できていなかったためまとめてみます。
##シンボル
シンボルとは、任意の文字列に1対1
に対応するオブジェクト
:hoge
のように表す
下記のように、文字列が都度異なるIDになるのに対し、シンボルではすべて同じIDになる
メリット: メモリの節約(メモリの同じ領域を使用するため)
[1] pry(main)> :hoge.object_id
=> 2307228
[2] pry(main)> :hoge.object_id
=> 2307228
[3] pry(main)> "hoge".object_id
=> 300
[4] pry(main)> "hoge".object_id
=> 320
##ハッシュのキーにシンボルで使う場合
ハッシュのキーには一般的に文字列ではなく、シンボルを使用する
理由としては、文字列よりも高速で値を取り出すことができるため
[1] pry(main)> hash = { name: '太郎', age: 20 }
=> {:name=>"太郎", :age=>20}
##キーワード引数
メソッドに引数を渡す場合に、その引数のもつ意味をわかりやすく表現したい場合
##条件演算子
記法は、
とある条件 ? 条件がtrueの時 : 条件がfalseの時
以下の二つは同じ意味の条件式
:
を使うことで、簡略に記述することができる
score = 80
score > 60 ? "合格" : "不合格"
=> "合格"
score = 80
if score > 60
"合格"
else
"不合格"
end
=> "合格"
##クラスの外部から定数を参照する場合
外部クラスの定数を参照する際に、::を使用する
class Hoge
FOO = 'Bar'
end
Hoge::FOO
=> "bar"
#使用例
validatesメソッドの引数にたくさん:が登場しています。
:email
:uniqueness
はシンボル
:length
:format
はキーワード引数
maximum: 255
with: VALID_EMAIL_REGEX
はハッシュのキーにシンボルを使用している
という意味で使っています。
validates :email, presence: true, length: { maximum: 255 },
format: { with: VALID_EMAIL_REGEX },
uniqueness: true
#参考文献
プロを目指す人のためのRuby入門(https://bit.ly/3wmJheK)