2008-04-01から1ヶ月間の記事一覧
attr_accessorに渡すのは:var instance_variable_getに渡すのは:@var これおかしいよね?instance_variable_getも:varでいってほしいなぁ. attr〜は定義するメソッド名を表すシンボルで,instance〜はインスタンス変数名のシンボルだという意味なのかもしれ…
define_method(:foo) {|*args, &block| #何か処理 } と書きたいんだけど,syntax errorになってしまう.define_methodではブロックを受け取るメソッドは定義できないのかなぁ. define_method(:foo) {|*args| block = proc rescue nil #何か処理 } これでで…
p 1.freeze.frozen? # => false p :foo.freeze.frozen? # => false なんか嫌だなぁ. class Fixnum attr_accessor :a end 3.a = 5 p 3.a # => 5 インスタンス変数持てるのか.知らなかった.じゃあなんでfreeze情報は保存されないんだろう? よく考えたら,i…
問題解いてみた.
Hoge = Struct.new(:foo, :bar, :baz) p Hoge.members # => ["foo", "bar", "baz"] Struct.newに渡したのはシンボルなのに,Struct#membersで文字列の配列が返ってくる.ここはシンボルの配列が返ってきて欲しいものじゃないのかなぁ?こういう時こそシンボ…
マクロの練習にcutを作っていたら,デバッグしにくくて困ったので,macro-debugを作ってみた. マクロを一段階ずつ展開,表示してくれる. (define-syntax my-cut (syntax-rules (<> helper) ((_ helper (args ...) (expr ...)) (lambda (args ...) (expr ..…
ラスボス初見で余裕でした^^
RubyでListライブラリの続き. unfoldを作ってみたんだけど,procを3つも渡さないといけないので面倒.Rubyは1つしかブロックが渡せないからなぁ. unfold(proc {|i| i == 10}, proc {|i| i * 2}, proc {|i| i + 1}, 0) # => (0 2 4 6 8 10 12 14 16 18) そ…