Rubyでのオブジェクト、変数などについて学習していきます。
オブジェクトについて
Rubyでは全てがオブジェクトで表現されます。
pryを使ってオブジェクトの中身を覗いてみます。
数値オブジェクト
数値の「5」オブジェクト内に移動する
[2] pry(main)> cd 5
[3] pry(5):1> ls Comparable#methods: between? Numeric#methods: +@ conj imaginary pretty_print_cycle rectangular abs2 conjugate nonzero? quo remainder angle eql? phase real singleton_method_added arg i polar real? step coerce imag pretty_print rect to_c Integer#methods: ceil downto gcdlcm next pred times to_r chr floor integer? numerator rationalize to_i truncate denominator gcd lcm ord round to_int upto Fixnum#methods: % ** -@ << == >= ^ div fdiv modulo succ zero? & + / <= === >> __pry__ divmod inspect odd? to_f | * - < <=> > [] abs even? magnitude size to_s ~ locals: _ __ _dir_ _ex_ _file_ _in_ _out_ _pry_
floor など数値の処理に関係するメソッドを持っているのがわかります。
文字列オブジェクト
文字列の「文字列」オブジェクト内に移動する
[7] pry(5):1> cd "文字列"
[8] pry("文字列"):2> ls Comparable#methods: < <= > >= between? String#methods: % chop! getbyte reverse succ * chr gsub reverse! succ! + clear gsub! rindex sum << codepoints hash rjust swapcase <=> concat hex rpartition swapcase! == count include? rstrip to_c === crypt index rstrip! to_f =~ delete insert scan to_i [] delete! inspect setbyte to_r []= downcase intern shell_split to_s ascii_only? downcase! length shellescape to_str b dump lines shellsplit to_sym bytes each_byte ljust size tr bytesize each_char lstrip slice tr! byteslice each_codepoint lstrip! slice! tr_s capitalize each_line match split tr_s! capitalize! empty? next squeeze unpack casecmp encode next! squeeze! upcase center encode! oct start_with? upcase! chars encoding ord strip upto chomp end_with? partition strip! valid_encoding? chomp! eql? prepend sub chop force_encoding replace sub! self.methods: __pry__ locals: _ __ _dir_ _ex_ _file_ _in_ _out_ _pry_
size など文字列の処理に関係するメソッドを持っているのがわかります。
配列、ハッシュオブジェクト
[1,2,3,4] の配列オブジェクト内に移動する
[6] pry(main)> cd [1,2,3,4]
[7] pry(#<Array>):1> ls Enumerable#methods: all? each_entry find_all max minmax_by sort_by any? each_slice flat_map max_by none? chunk each_with_index grep member? one? collect_concat each_with_object group_by min partition detect entries inject min_by reduce each_cons find lazy minmax slice_before Array#methods: & count include? reject slice * cycle index reject! slice! + delete insert repeated_combination sort - delete_at inspect repeated_permutation sort! << delete_if join replace sort_by! <=> drop keep_if reverse take == drop_while last reverse! take_while [] each length reverse_each to_a []= each_index map rindex to_ary assoc empty? map! rotate to_s at eql? pack rotate! transpose bsearch fetch permutation sample uniq clear fill place select uniq! collect find_index pop select! unshift collect! first pretty_print shelljoin values_at combination flatten pretty_print_cycle shift zip compact flatten! product shuffle | compact! frozen? push shuffle! concat hash rassoc size self.methods: __pry__ locals: _ __ _dir_ _ex_ _file_ _in_ _out_ _pry_
{:one => 1, :two => 2} のハッシュオブジェクト内に移動する。
[3] pry(main)> cd {:one => 1, :two => 2}
[5] pry(#<Hash>):1> ls Enumerable#methods: all? drop_while find_index max_by reverse_each any? each_cons first min slice_before chunk each_entry flat_map min_by sort collect each_slice grep minmax sort_by collect_concat each_with_index group_by minmax_by take count each_with_object inject none? take_while cycle entries lazy one? zip detect find map partition drop find_all max reduce Hash#methods: == delete_if include? pretty_print to_a [] each index pretty_print_cycle to_h []= each_key inspect rassoc to_hash assoc each_pair invert rehash to_s clear each_value keep_if reject update compare_by_identity empty? key reject! value? compare_by_identity? eql? key? replace values default fetch keys select values_at default= flatten length select! default_proc has_key? member? shift default_proc= has_value? merge size delete hash merge! store self.methods: __pry__ locals: _ __ _dir_ _ex_ _file_ _in_ _out_ _pry_
:hoge は「シンボル」と呼ばれ、日本語が使えない文字列オブジェクトのようなイメージ。
ハッシュのキーとして使われることが多いとのこと。
正規表現オブジェクト
[10] pry(main)> cd Regexp.new("Ruby")
[11] pry(#<Regexp>):1> ls Regexp#methods: == casefold? fixed_encoding? match options ~ === encoding hash named_captures source =~ eql? inspect names to_s self.methods: __pry__ locals: _ __ _dir_ _ex_ _file_ _in_ _out_ _pry_
時刻オブジェクト
[2] pry(main)> t = Time.now => 2014-09-03 23:15:42 +0900 [3] pry(main)> cd t
[4] pry(#<Time>):1> ls Comparable#methods: < <= == > >= between? Time#methods: + friday? hash monday? succ tuesday? wday - getgm hour month sunday? tv_nsec wednesday? <=> getlocal inspect nsec thursday? tv_sec yday asctime getutc isdst round to_a tv_usec year ctime gmt? localtime saturday? to_f usec zone day gmt_offset mday sec to_i utc dst? gmtime min strftime to_r utc? eql? gmtoff mon subsec to_s utc_offset self.methods: __pry__ locals: _ __ _dir_ _ex_ _file_ _in_ _out_ _pry_
シンボルオブジェクト
[1] pry(main)> cd :sym
[2] pry(:sym):1> ls Comparable#methods: < <= > >= between? Symbol#methods: <=> [] downcase inspect next succ to_sym == __pry__ empty? intern pretty_print_cycle swapcase upcase === capitalize encoding length size to_proc =~ casecmp id2name match slice to_s locals: _ __ _dir_ _ex_ _file_ _in_ _out_ _pry_
範囲オブジェクト
[1] pry(main)> cd 1..10
[2] pry(#<Range>):1> ls Enumerable#methods: all? drop_while find_index minmax slice_before any? each_cons flat_map minmax_by sort chunk each_entry grep none? sort_by collect each_slice group_by one? take collect_concat each_with_index inject partition take_while count each_with_object lazy reduce to_a cycle entries map reject zip detect find max_by reverse_each drop find_all min_by select Range#methods: == bsearch end first inspect member? size === cover? eql? hash last min step begin each exclude_end? include? max pretty_print to_s self.methods: __pry__ locals: _ __ _dir_ _ex_ _file_ _in_ _out_ _pry_
Rubyでは、数値の範囲を「..」や「...」を使って表現することができます。
例外オブジェクト
[1] pry(main)> e = Exception.new => #<Exception: Exception> [2] pry(main)> cd e
[3] pry(#<Exception>):1> ls Exception#methods: == backtrace exception inspect message respond_to? set_backtrace to_s self.methods: __pry__ locals: _ __ _dir_ _ex_ _file_ _in_ _out_ _pry_
例外処理を行う場合に、使用するオブジェクトです。
変数について
Ruby で使用される変数は以下の4種類です。
ローカル変数
変数名の先頭がアルファベットの小文字か_(アンダースコア)で始まる。
hoge = 1 _foo = "fuga"
グローバル変数
変数名の先頭が $ で始まる。
$g_hoge = false
インスタンス変数
変数名の先頭が @ で始まる。
@hoge = "member"
クラス変数
変数名の先頭が @@ で始まる。
@@hoge = "var"
代入することができないのですが、変数という名前がついている特殊なものがあります。
擬似変数
nil、true、false、self
定数について
先頭が大文字なら定数となります。
HOGE = 3

- 作者: 高橋征義,後藤裕蔵,まつもとゆきひろ
- 出版社/メーカー: ソフトバンククリエイティブ
- 発売日: 2013/06/04
- メディア: 単行本
- この商品を含むブログ (26件) を見る

- 作者: 久保秋真
- 出版社/メーカー: SBクリエイティブ株式会社
- 発売日: 2013/11/08
- メディア: Kindle版
- この商品を含むブログ (2件) を見る