Open6

Ruby学習メモ

Yuma ItoYuma Ito

範囲 (..)

(0..9).to_a #  [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

配列のインデックスに使用することができる。

a = %w[foo bar baz quux] # ["foo", "bar", "baz", "quux"]

a[0..2] # ["foo", "bar", "baz"]

インデックスに-1を使うことができる

a[1..-1] # ["bar", "baz", "quux"]
Yuma ItoYuma Ito

ブロック

>> (1..5).each { |i| puts 2 * i }
2
4
6
8
10

do endでも表現できる。

>> (1..5).each do |i|
?>     puts 2 * i
>> end
2
4
6
8
10
Yuma ItoYuma Ito

mapメソッド

配列や範囲オブジェクトの各要素に対して処理を実行して結果を返却する。

>> %w[A B C].map { |char| char.upcase }
=> ["A", "B", "C"]

省略記法は以下。

>> %w[a b c].map(&:upcase)
=> ["A", "B", "C"]
Yuma ItoYuma Ito

ハッシュ

他の言語では「連想配列」と呼ばれていることもある。

user = {}
user['firstname'] = 'Michael'
user['lastname'] = 'Hartl'
user
=> {"firstname"=>"Michael", "lastname"=>"Hartl"}

複数のキーと値をまとめて定義することもできる。

>> user = { 'firstname' => 'Michael', 'lastname' => 'Hartl' }
=> {"firstname"=>"Michael", "lastname"=>"Hartl"}

ハッシュにはシンボルをキーとして使うことが一般的であるらしい。以下の記法もある。

user = { :firstname => 'Michael', :lastname => 'Hartl' }
user = { firstname: 'Michael', lastname: 'Hartl' }

どちらも同じハッシュになる。(2つ目はJavaScriptでの記法に似ている)

Yuma ItoYuma Ito

クラス

newメソッドによってインスタンスを生成する。

>> s = String.new('foobar')
=> "foobar"
>> s.class
=> String

すべてのクラスはBasicObjectクラスを継承している。
Rubyはあらゆるものがオブジェクトである。
nilNilClass、シンボルはSymbolクラスのインスタンスである。

Rubyでは組み込みの基本クラスの拡張が可能。(例えば、Stringクラスにメソッドを追加することができる)
ただし、真に正当な理由がない限りは追加しないほうが良い。

Yuma ItoYuma Ito

attr_accessor

クラスの属性(attribute)にアクセサを追加するメソッド。

class User
  attr_accessor :name
end

Getter, Setterが追加された状態になる。