Rubyで書かれたプログラムを見た時に、記号の意味が良くわからないなぁと思うことがあったので、整理してみました(._.)!
記号一覧
<:継承
<
は「大なり小なり」で使われるイメージが強いですがRubyではClassの継承にも使われます。
class Hoge def hello puts 'hello' end end # Hogeを継承したクラス class Fuga < Hoge def bye puts 'good bye' end end # Hogeを継承しているため、helloメソッドが呼び出せる puts Fuga.new.hello
:::定数の参照、クラス内クラスの参照
::
は、ModuleやClassに定義された定数・Classの呼び出しを意味します。
class Hoge # 定数 CONST_STRING = "定数" # Class内に定義されたClass class Piyo def bye 'good bye!!' end end end # Module内に定数を定義 module Fuga FOO = 'Foo' BAR = 'BAR' end # Class内に定義した定数の呼び出し puts Hoge::CONST_STRING # Class内に定義したClassの呼び出し puts Hoge::Piyo.new.bye # Moduke内で定義した定数の呼び出し puts Fuga::FOO
&:&演算子、ぼっち演算子
&
は&&
としてif文等の中でAND演算子
として使われることが多いですが、&演算子と呼ばれる:&
の形式や、ぼっち演算子と呼ばれる.&
の形式で使わることもあります。
# === &演算子 === num = [0, 1, 2] # 下記は、num.map{ |n| n.to_s }と同じ p num.map(&:to_s) # === ぼっち演算子 === hoge = nil # NoMethodError p hoge.fuga # 存在しないmメソッドの場合nilが返却される p hoge&.fuga
@:インスタンス変数、クラス変数
Class内で使用される@
付き変数は、インスタンス変数を表します。また@@
付きの変数はクラス変数を表します。
class Hoge @@piyo = "piyo" def initialize(str) @var = str end def piyo @@piyo end def var @var end end #<Hoge:0x000055e6bbff9a40 @var="hoge"> p hoge = Hoge.new("hoge") #<Hoge:0x000055e6bbff9888 @var="fuga"> p fuga = Hoge.new("fuga") # 下記からは、両方"piyo"が返却される※クラス変数で定義された値はインスタンス間で共有される p hoge.piyo p fuga.piyo
$:グローバル変数
$
が付与された変数がグローバル変数となり、実行中のプログラムのどこでも参照可能な変数となります。
$var = "global_var" class Hoge def self.global_var # こんなところでも参照できます。 $var end end # "global_var" p Hoge.global_var
** : 累乗
**
を演算子として使うと累乗を取得することが出来ます。
# 3の3乗である27が返却される p 3 ** 3
<<-:ヒアドキュメント
<<-
で定義された文字列は、ヒアドキュメントと呼ばれる複数行の文字列を扱うことが出来るものです。
hoge = <<-EOF 複数行の 文字列を 扱えます EOF # "複数行の\n文字列を\n扱えます\n" p hoge
参考
以上です、また何か気づいたら追記しようと思いますφ(..)