2013-01-01から1ヶ月間の記事一覧
str = "hoge'fuga" puts str.gsub(/'/, "\\'") #=> hogefugafuga ??? 参考 http://qiita.com/items/7a1b98c0e36e7d4e33e2 http://yyuto.blogspot.jp/2009/06/ruby.html http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-list/14752 できました。 …
へぇと思ったのでメモ。 親クラスで定義された定数は、子クラスにも継承されて修飾なしで参照できる。 クラス名も定数なので、それも出る。 class Hoge ABC = 123 class Fuga end end class Foo < Hoge p constants #=> [:ABC, :Fuga] end なんだか変な感じ…
Hogeモジュールを継承したFugaモジュールを作ろうとしたらエラーになった。 module Hoge def self.hoge # 特異メソッド puts "hoge!!!" end end module Fuga < Hoge def self.hoge # 特異メソッド puts "fuga!!!" super end end Fuga.hoge SyntaxError: (irb…
コンストラクタで、インスタンス変数を初期化する際に引数があればそれを、なければデフォルト値を入れたかった。 class Hoge attr_accessor :foo, :bar, :baz DEFAULT = { :foo => 'foo', :bar => 'baz', :baz => 'baz', } def initialize(opt = {}) DEFAUL…
メタプログラミングRubyに書いてあったことメモ。 class Hoge ~ end の間に地の文で書かれている@の変数は「クラスインスタンス変数」と呼ばれるらしい。 class Hoge @p = 123 @@p = 234 end # クラスインスタンス変数 puts Hoge.instance_variable_get(:@p…
自分用まとめ。 結論 lambda使っておけば問題ない。 Kernel#procは? 1.8だとlambdaと同じ動きをする。 1.9だとProc.newと同じ動きをする。 使う必要ない。 違いその1 return lambda内でのreturnは、メソッドのdefと同じ動きをする。分かりやすい。 lambda …
.callだけだと思ったらでも呼び出せるらしい。 http://www.ruby-doc.org/core-1.9.3/Proc.html -> { puts "lambda!" } #=> "lambda!" Proc.new { puts "Proc!" }[] #=> "Proc!" rspec/core.rbのrequireがそうなってて、見たときびびった。
読んでます。 メタプログラミングRuby 作者: Paolo Perrotta,角征典 出版社/メーカー: アスキー・メディアワークス 発売日: 2010/08/28 メディア: 大型本 購入: 18人 クリック: 533回 この商品を含むブログ (120件) を見る その中でMerbを例に「クラス拡張ミ…
Perlだとこれは動く。 my $outer = 123; sub hoge { print "$outer\n"; } hoge(); #=> 123 Perlは内側への変数スコープは有効だからだ。 対してRubyは動かない。 outer = 123 def hoge puts outer end hoge() #=> NameError: undefined local variable or me…