2008-04-01から1ヶ月間の記事一覧

attr_accessorとinstance_variable_get

attr_accessorに渡すのは:var instance_variable_getに渡すのは:@var これおかしいよね?instance_variable_getも:varでいってほしいなぁ. attr〜は定義するメソッド名を表すシンボルで,instance〜はインスタンス変数名のシンボルだという意味なのかもしれ…

1.8では,define_methodでブロックを受け取るメソッドは定義できない?

define_method(:foo) {|*args, &block| #何か処理 } と書きたいんだけど,syntax errorになってしまう.define_methodではブロックを受け取るメソッドは定義できないのかなぁ. define_method(:foo) {|*args| block = proc rescue nil #何か処理 } これでで…

FixnumとSymbolのインスタンスはfreezeできない?

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…

るびまゴルフ第3回

問題解いてみた.

Struct#membersが文字列の配列を返すのはどうなの?

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 ..…

とりあえずクリア

ラスボス初見で余裕でした^^

unfoldとブロックと多値

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) そ…