くまりゅう日記

もっと過去の日記
[.NET | BeOS | Blender | COLLADA | fossil | mono | monotone | NPR | OpenGL | PeerCastStation | Riko | Ruby | Silverlight | TRPG | XNA | ゲーム | ゲーム作り | プログラム | | 模型]

2006-08-10 今日もあついぜ

_ あつい

夜1時に仕事から帰ってきて32℃とかひどくね。

_ [BeOS] VM

Parallelsのベータ版でZetaが動かないか試してみた。

結論から言えば、前と変わらず無理だったんだけど。

やはりブートローダが別ディスクのパーティションを認識出来ないんじゃないかと思うんだが。

同じディスクのパーティションが認識できるのかどうかは確認してないんだけど、Haikuのイメージが*1起動できるというのはそういうことなんじゃないかと。

となるとCD-ROMから起動できないのが気にはなるが。

でもCD-ROMの起動で最初のトラックにブート可能なFDDイメージが入っていてそこから起動、ってのが普通なんだよな。とすると、ブートローダが起動した時点では仮想FDDから起動してることになってて、CD-ROMはブートローダが別にマウントしなくちゃいけないのかな?

ほんとうかなぁ。CD-ROMの最初のトラックが起動可能なFDDイメージというのは正しかったと思うんだけど。

なんにせよHDDとは違うとは思う。

で、試したいのは、インストール済みのHDDイメージをひっこぬいてそれでブートできるかどうか。でもひっこぬくのめんどい。

土日でやれるといいけど。あー、Zeta1.2も欲しいな。

*1  ちょっといじる必要があるにせよ

_ [Riko] つかRuby

Rubyむずかしいよな。

クラス変数とかクラスのインスタンス変数とか。

class A
  def self.set_test1(v)
    @@test1 = v
  end

  def self.test1
    @@test1
  end

  def self.set_test2(v)
    @test2 = v
  end

  def self.test2
    @test2
  end

  set_test1 'a'
  set_test2 'a'
end

module M
  def self.set_test_m(v)
    @test_n = v
  end

  def self.test_m(v)
    @test_n
  end
end

class B < A
  set_test1 'b'
  set_test2 'b'
end

class C < B
  include M
  set_test1 'c'
  set_test2 'c'
end

p A.test1 # (1)
p A.test2 # (2)
p B.test1 # (3)
p B.test2 # (4)
p C.test1 # (5)
p C.test2 # (6)

C.set_test_m 'c'
p C.test_m 'c' # (7)

さて、1〜7はどうなるか。

  1. 'c'
  2. 'a'
  3. 'c'
  4. 'b'
  5. 'c'
  6. 'c'
  7. つかその一行前でNoMethodError

つまりクラスの特異メソッド内のselfは継承後のクラス、というかレシーバか。しかしクラス変数はレシーバとか全然関係無くて、定義されたクラスっぽい感じ。

あとincludeと継承はすくなくとも特異メソッドの扱いが違うぞとか。

これむずくね?

もしかしたら1.9では変わってんのかな。クラス変数とか。

あと嵌まるのは。

class A
  def self.test=(v)
    @@test = v
  end

  def self.test
    @@test
  end
  test = 'ccc'
  p self.test # (1)
end

これまた1には何が表示されるか。

  1. NameErrorで落ちる(@@testが初期化されていない)

つまりA内でのtest = 'ccc'はローカル変数への代入と。

ほんとむずいって。


ページのトップへ | トップ «前の日記(2006-08-06) 最新 次の日記(2006-08-13)» | 編集 | kumaryu.net by kumaryu