railstutorial.jp 4章メモ
rails console
コメント
文字列
式展開 #{first_name}はダブルクォートのなかのみ
putsはput string
nil.to_s.empty? “".nil? nil.nil?
Rubyにおいてifがfalseになるのはfalseとnilのみ
if nil then true else false end #=> false if 0 then true else false end #=> true
Rubyは最後の評価値が自動的に返される
moduleはクラスにincludeすることでmixed inできる
ヘルパーモジュールの場合はRailsが自動的にインクルードするので全ビューで利用可能
配列
a = [ 42, 8, 17] a.first a.second a.last == a[-1] #=> true a.length a.push(6) a << 7 a << "foo" << “bar" a.join a.join(‘,’)
Range
0..9 (0..9).to_a
%w
a = %w[foo bar baz quux] a[0..2] # インデックスの範囲指定
区切り文字は何でもいいぽい
a = %w|foo bar baz quux| a = %w@foo bar baz quux@
ブロック
(1..5).each { |i| puts 2 * i } (1..5).each do |i| puts 2 * i end 3.times { puts "Betelgeuse!" } (1..5).map { |i| i**2 } # **はべき乗
('a'..'z').to_a.shuffle[0..7].join # アルファベットの配列をシャッフルして最初の8要素を取り出して連結 ('a'..'z’) ('a'..'z’).to_a ('a'..'z’).to_a.shuffle ('a'..'z’).to_a.shuffle[0..7] ('a'..'z’).to_a.shuffle[0..7].join
ハッシュとシンボル
user = { "first_name" => "Michael", "last_name" => "Hartl” }
ハッシュの要素の順番は1.9以降保証されるようになった
ハッシュロケット =>
ハッシュのキーはシンボルを使うのが一般的
user = { :name => "Michael Hartl", :email => "[email protected]” } # Ruby1.9 以降は、新しい記法でJavaScriptぽく書ける { name: "Michael Hartl", email: "michael@example.com” }
オブジェクトを文字列にするinspectメソッド便利メソッド
puts :name, :name.inspect, "name”.inspect
pは putsとinspectを合わせた効果。phpでいうvar_dumpやprint_r
省略された記法のルールと読み方
関数呼び出しの丸括弧は省略可能
stylesheet_link_tag("application", media: "all", "data-turbolinks-track" => true) stylesheet_link_tag "application", media: "all", "data-turbolinks-track" => true
最後の引数がハッシュの場合、波括弧は省略可能
# data-turbolinks-track: trueになっていないのは、新しいハッシュ記法ではハイフンが使えないため。 stylesheet_link_tag "application", { media: "all", "data-turbolinks-track" => true } stylesheet_link_tag "application", media: "all", "data-turbolinks-track" => true
コンストラクタ
文字列
s = “foobar”
s.class
s = String.new(“foobar”)
配列
a = [1,3,2] a = Array.new([1, 3, 2])
ハッシュだけコンストラクタの引数がデフォルト値になる
h = {} h = Hash.new h[:hoge] # => nil 存在しないキーはnil h = hash.new(0) h[:hoge] # => 0 存在しないキーのデフォルト値になる
クラス
superclassメソッド
Ruby1.9以降、ObjectクラスのスーパークラスとしてBasicObjectがある
Rubyは定義済みのクラスの拡張ができる(オープンクラス)
たとえばRailsではblank?メソッドが追加されていて、Railsコンソールではその拡張も読み込まれる
Railsコンソールでコントローラのアクションも呼べる
controller = StaticPagesController.new
controller.home
require ‘./example_user'
attr_accessor
インスタンス変数 @name
initializeはnewを実行するときに呼ばれるメソッド
ハッシュ引数を使用してオブジェクトを初期化する手法、マスアサインメント(mass assignment)