丁稚な日々

Rubyで遊んだ日々の記録。あくまで著者視点の私的な記録なので、正確さを求めないように。
Rubyと関係ない話題にはその旨注記しているはず。なので、一見関係無いように見える話題もどこかで関係あるのかもしれません。または、注記の書き忘れかもしれません...

[直前] [最新] [直後] [Top]

Nov.1,2006 (Wed)

Revision: 1.1 (Nov.01,2006 16:39)

zsuper

_ zsuperというのは引数リストのないsuperのこと。
リファレンスマニュアルによると、zsuperの場合は現在のメソッドの引数がそのまま引き渡されますということになっている。

_ 昨日1.8で直したのはこの部分で、自メソッドがオプション引数とレスト引数(という名前でいいだろうか)の両方を持つ場合にzsuperを実行すると引数が正しく渡されないというものだった。

_ 直してcommitの許可が出るまでの間に少し悩んでいたのだが、今回のバグ修正の結果も、1.8.4と互換性がない部分がある。

# test1.rb
class Foo
  def foo(*a)
    p a
  end
end

class Bar < Foo
  def foo(a = 0, *b)
    super(a, *b)
    super
  end
end

Bar.new.foo

上記のようなコードを実行すると、

% ruby-1.8.4 test1.rb
[0]
[]
% ruby-1.8.5 test1.rb
[0]
[]
% ruby-1.8 test1.rb
[0]
[0]

となるのである。
これを入れちゃったのはまずかったかなあ。

_ 念のために書いておくと、

# test2.rb
class Foo
  def foo(*a)
    p a
  end
end

class Bar < Foo
  def foo(a = 0)
    super(a)
    super
  end
end

Bar.new.foo

というスクリプトだと

% ruby-1.8.4 test2.rb
[0]
[0]
% ruby-1.8.5 test2.rb
[0]
[0]
% ruby-1.8 test2.rb
[0]
[0]

となるわけで、やはり従来の挙動が誤っているのだとは確信している。

Nov.2,2006 (Thu)

Revision: 1.4 (Nov.02,2006 04:02)

記号ゴルフ

_ 密かに(というほどでもないが)取り組んでいたのだけれど、短くならないので諦めてた問題
解答編が出ていることにebanさんの日記で気付く。

_ ガーン、$.使わなくてよかったのか。
これに捕われてしまったばっかりに、1を作り出すために無駄に長くなってたんだよなあ。
かなり敗北感……。
やはり世界とはレベルが違いすぎるようだ。

_ ちなみにこんなん考えてました。3H26B。

$<.map{|_|$><<_*=$.&$./$.}

被捕捉アンテナ類
[\ay antenna (testing)] [Ant] [Antenna-Julia] [LayserあんてなV2] [nAntenna] [nuance de Antenna] [Rabbit's Antenna] [Read List] [Ruby hotlinks 五月雨版 (るるりん。)] [してたま (私的アンテナ with たまてばこ)] [ただのあんてな] [ちゃらんぽらん] [でこぽんリンク] [なよろアンテナ] [にっきトレーサー] [偽善者あんてな - 2nd season -] [湘南日記放送局(SDB)] [はてなの各アンテナ]