[#18233] [book] blade.nagaokaut.ac.jp/ruby/ruby-list/ — Shin-ichiro Hara <sinara@...>

原です。

21 messages 1999/11/01
[#18239] [book] csv_split2 [Re: blade.nagaokaut.ac.jp/ruby/ruby-list/] — keiju@... (石塚圭樹) 1999/11/01

けいじゅ@日本ラショナルソフトウェアです.

[#18244] Re: [book] csv_split2 [Re: blade.nagaokaut.ac.jp/ruby/ruby-list/] — Shin-ichiro Hara <sinara@...> 1999/11/01

原です。

[#18289] Re: [book] csv_split2 — Koretsugu Daigoro <tmmcross@...> 1999/11/02

これつぐです。

[#18291] Re: [book] csv_split2 — keiju@... (石塚圭樹) 1999/11/02

けいじゅ@日本ラショナルソフトウェアです.

[#18311] Re: [book] csv_split2 — Koretsugu Daigoro <tmmcross@...> 1999/11/02

これつぐです。

[#18338] オブジェクトの非同一性判定 — Ayanosuke <aya@...>

 綾乃介です。

13 messages 1999/11/03

[#18539] [book] $*, etc. — Yasuhiro Fukuma <yasuf@...>

福間@福岡 です。

44 messages 1999/11/11

[#18580] — tokoma@... (中川 誠)

中川です。

44 messages 1999/11/14
[#18619] build on alpha — Go Nakagawa <nakagawa@...> 1999/11/15

もとの質問のかたとは別の中川です。

[#18737] Re: build on alpha — tokoma@... (中川 誠) 1999/11/18

中川です。

[#19144] Re: build on alpha — tokoma@... (中川 誠) 1999/12/04

中川です。長文で失礼します。

[#19341] Re: build on alpha — tokoma@... (中川 誠) 1999/12/09

中川です。

[#19344] Re: build on alpha — matz@... (Yukihiro Matsumoto) 1999/12/09

まつもと ゆきひろです

[#19400] Re: build on alpha — tokoma@... (中川 誠) 1999/12/10

中川です。

[#19426] Re: build on alpha — EGUCHI Osamu <eguchi@...> 1999/12/11

えぐち@エスアンドイー です。

[#19459] Re: build on alpha — tokoma@... (中川 誠) 1999/12/13

中川です。

[#19461] Re: build on alpha — EGUCHI Osamu <eguchi@...> 1999/12/13

えぐち@エスアンドイー です。

[#19506] Re: build on alpha — tokoma@... (中川 誠) 1999/12/14

中川です。

[#19520] Re: build on alpha — EGUCHI Osamu <eguchi@...> 1999/12/15

えぐち@エスアンドイー です。

[#19522] Re: build on alpha — matz@... (Yukihiro Matsumoto) 1999/12/15

まつもと ゆきひろです

[#19543] Re: build on alpha — EGUCHI Osamu <eguchi@...> 1999/12/15

えぐち@エスアンドイー です。

[#19562] Re: build on alpha — tokoma@... (中川 誠) 1999/12/15

中川です。

[#19569] Re: build on alpha — EGUCHI Osamu <eguchi@...> 1999/12/16

えぐち@エスアンドイー です。

[#19592] Re: build on alpha — tokoma@... (中川 誠) 1999/12/16

中川です。

[#18637] constant? — Kazuhiro Yoshida <moriq.kazuhiro@...>

もりきゅうです。

20 messages 1999/11/16
[#18640] Re: constant? — WATANABE Hirofumi <Hirofumi.Watanabe@...> 1999/11/16

わたなべです.

[#18650] Re: constant? — Kazuhiro Yoshida <moriq.kazuhiro@...> 1999/11/16

もりきゅうです。

[#18657] Re: constant? — matz@... (Yukihiro Matsumoto) 1999/11/16

まつもと ゆきひろです

[#18709] ADO にて datetime 型の取得 — Takashi SHIODA <tsio@...>

塩田です。

18 messages 1999/11/18
[#18779] Re: ADO にて datetime 型の取得 — Masaki Suketa<CQN02273@...> 1999/11/20

助田です.

[#18802] Re: ADO にて datetime 型の取得 — Takashi SHIODA <tsio@...> 1999/11/21

オレンジソフト塩田です。

[#18712] Re: header output in eruby — TAKEUCHi Kahori <take-k@...>

たけうちです。

16 messages 1999/11/18
[#18716] Re: header output in eruby — "NAKAMURA, Hiroshi" <nakahiro@...> 1999/11/18

なひです.

[#18830] mod_ruby-0.1.4 — TAKAHASHI Masayoshi <maki@...>

高橋征義です。

16 messages 1999/11/22

[#18853] initializer polymorphism? — Takeyuki Watadani <watadani@...>

渡谷といいます。

25 messages 1999/11/23

[#18911] Re: eRuby 変換後の無駄 (?) な改行 — TAKEUCHi Kahori <take-k@...>

たけうちです。

14 messages 1999/11/25

[#18914] Ruby standard GUI framework? — Hideto ISHIBASHI <s34204@...>

石橋秀仁です。

43 messages 1999/11/25
[#18975] Re: Ruby standard GUI framework? — 中村暁史 Nakamura Akifumi <BXQ04723@...> 1999/11/27

[#19020] Re: Ruby standard GUI framework? — Hideto ISHIBASHI <s34204@...> 1999/11/29

石橋秀仁です。

[#19026] Re: Ruby standard GUI framework? — Noritsugu Nakamura <nnakamur@...> 1999/11/29

[#19081] Re: Ruby standard GUI framework? — "Hideaki Takata" <hideakit@...3.dion.ne.jp> 1999/12/01

たかたです。

[#19092] Re: Ruby standard GUI framework? — Noritsugu Nakamura <nnakamur@...> 1999/12/01

[#19112] Re: Ruby standard GUI framework? — 中村暁史 Nakamura Akifumi <BXQ04723@...> 1999/12/02

[#19131] Re: Ruby standard GUI framework? — Noritsugu Nakamura <nnakamur@...> 1999/12/03

[#18948] 他言語との比較 — とみたまさひろ <tommy@...>

とみたです。

18 messages 1999/11/26

[ruby-list:18973] Re: initializer polymorphism?

From: gotoken@... (GOTO Kentaro)
Date: 1999-11-27 01:19:22 UTC
List: ruby-list #18973
ごとけんです

In message "[ruby-list:18953] Re: initializer polymorphism?"
    on 99/11/26, Takeyuki Watadani <watadani@tubulin.cb.m.u-tokyo.ac.jp> writes:

>渡谷です。

>話はそれますが、instance_evalを使うといつでもどこでも誰でも
>カプセル化を容易に破壊できるんですね。クラスに定義を追加した
>りメソッドを削除したりもできるし…

てわけで、instance_evalで書き直してみました。最後につけます。

>#本物のRubyプログラマは紳士だってことですね。きっと。
>#あ、淑女でももちろんいいです。

^^;

Rubyの場合、裏口から楽屋に入れるわけですね。逆にいえば楽屋に
は裏口からしか入れない。そういう気分になってしまうし、そう書
くようにひそかに矯正されてしまいます。こうして、しばらくRuby
を使っていると「どのように書くか」に集中してしまうようになる。
危険な言語です ^^;;;  # See also [ruby-list:16616]

>class 三角形
>...
>end
>ってやると
>class/module name must be CONSTANT
>って怒られてしまいますね。やっぱり大文字じゃないって判定にな
>るのか…

日本語文字の識別子は小文字で始まるものとみなされます。

-- gotoken

#!/usr/local/bin/ruby
class Triangle
  include Math

  def initialize
    @hen1 = @hen2 = @hen3 = nil
  end
  
  attr_reader :hen1, :hen2, :hen3 
  
  Prototype = Triangle::new

  class << self
    undef new

    def newInstanceFrom3hen(hen1, hen2, hen3)
      Prototype.clone.instance_eval {
	@hen1, @hen2, @hen3 = hen1, hen2, hen3
	self  # `instance_eval' returns the last value
      }
    end
    
    def newInstanceFrom2hen1kaku(hen1, hen2, kaku)
      Prototype.clone.instance_eval{
	hen3 = sqrt(hen1**2 + hen2**2 - 2*hen1*hen2*cos(kaku))
	@hen1, @hen2, @hen3 = hen1, hen2, hen3
	self
      }
    end
  end

end

include Math

p Triangle.newInstanceFrom3hen(5, 5, 5)
p Triangle.newInstanceFrom2hen1kaku(5, 5, PI/3)


# omake: congruent relations version :-)

class Triangle
  include Math

  attr_reader :side0, :side1, :side2 

  def initialize
    @side0 = @side1 = @side2 = nil
  end

  Prototype = Triangle::new
  Triangle.instance_eval{ undef new }

  class UniqueTriangles < Hash; end  # implimataion goes blow
  ThreeSides       = UniqueTriangles.new(nil)
  TwoSidesOneAngle = UniqueTriangles.new(nil)

  def TwoSidesOneAngle.sides_for(side0, side1, angle)
    [side0, side1, sqrt(side0**2 + side1**2 - 2*side0*side1*cos(angle))]
  end

  class UniqueTriangles < Hash       # implemetation here
    TrianglePool = {}

    protected :[]=

    def [](a0,a1,a2)
      s = sides_for(a0,a1,a2)
      c = permutation(*s).sort{|i,j|
	i.collect{|a| [a.type.name, a]} <=> j.collect{|a| [a.type.name, a]}
      }
      
      TrianglePool[c[0]] or
	begin
	  res = TrianglePool[c[0]] = generate(*c[0])
	  c.each{|i| self[i] = res}
	  res
	end
    end

    def sides_for(a0, a1, a2) # default interpretation of self[args]
      [a0, a1, a2]
    end

    private

    def generate(a0,a1,a2)
      Prototype.clone.instance_eval {
	@side0, @side1, @side2 = a0, a1, a2
	self
      }
    end

    def permutation(a0,a1,a2)
      [[a0,a1,a2], [a1,a2,a0], [a2,a0,a1], 
	[a2,a1,a0], [a0,a2,a1], [a1,a0,a2]]
    end
  end
end

if __FILE__ == $0
  include Math

  S3   = Triangle::ThreeSides
  S2A1 = Triangle::TwoSidesOneAngle

  p S3[5,5,5]
  p S2A1[5,5,PI/3]
  p S3[1,2,3] == S3[2,3,1]           #=> true
  p S2A1[1,5,PI/3] == S2A1[5,1,PI/3] #=> true
  p S3[1,1,1] == S3[1,1,1.0]         #=> false (type mismatch)
  p S2A1[5,5,PI/3] == S3[5,5,5.0]    #=> false (numerical error)
end

In This Thread

Prev Next