[#5809] mod_ruby-0.0.7 — Shugo Maeda <shugo@...>

前田です。

63 messages 1999/03/01
[#5845] Re: mod_ruby-0.0.7 — Shugo Maeda <shugo@...> 1999/03/01

前田です。

[#5860] Re: mod_ruby-0.0.7 — moochan <moochan@...> 1999/03/02

moochan です.

[#5892] Re: mod_ruby-0.0.7 — Shugo Maeda <shugo@...> 1999/03/02

前田です。

[#5855] Re: mod_ruby-0.0.7 — Shugo Maeda <shugo@...> 1999/03/01

前田です。

[#5919] Re: mod_ruby-0.0.7 — Shugo Maeda <shugo@...> 1999/03/03

前田です。

[#5895] [REQ] 中置の def — EGUCHI Osamu <eguchi@...>

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

18 messages 1999/03/02
[#5907] Re: [REQ] 中置の def — EGUCHI Osamu <eguchi@...> 1999/03/03

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

[#5965] Re: Precision in Mathematica (Re: Bigfloat) — keiju@... (石塚圭樹 )

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

28 messages 1999/03/04
[#5981] Re: Precision in Mathematica (Re: Bigfloat) — gotoken@... (GOTO Kentaro) 1999/03/04

ごとけん

[#6053] Re: Precision in Mathematica (Re: Bigfloat) — matz@... (Yukihiro Matsumoto) 1999/03/06

まつもと ゆきひろです

[#6150] Re: Precision in Mathematica (Re: Bigfloat) — matz@... (Yukihiro Matsumoto) 1999/03/09

まつもと ゆきひろです

[#6159] Re: Precision in Mathematica (Re: Bigfloat) — EGUCHI Osamu <eguchi@...> 1999/03/09

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

[#6197] Re: Precision in Mathematica (Re: Bigfloat) — keiju@... (石塚圭樹 ) 1999/03/10

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

[#6203] Re: Precision in Mathematica (Re: Bigfloat) — EGUCHI Osamu <eguchi@...> 1999/03/10

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

[#6224] Re: Precision in Mathematica (Re: Bigfloat) — keiju@... (石塚圭樹 ) 1999/03/11

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

[#6238] Re: Precision in Mathematica (Re: Bigfloat) — EGUCHI Osamu <eguchi@...> 1999/03/11

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

[#6302] Re: Precision in Mathematica (Re: Bigfloat) — keiju@... (石塚圭樹 ) 1999/03/12

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

[#6304] Re: Precision in Mathematica (Re: Bigfloat) — EGUCHI Osamu <eguchi@...> 1999/03/12

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

[#5970] [REQ] variable of regex — keiju@... (Keiju ISHITSUKA)

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

43 messages 1999/03/04

[#6090] Thread#kill — Shugo Maeda <shugo@...>

前田です。

24 messages 1999/03/08

[#6328] Re: Ruby 1.3.1-990315 — WATANABE Hirofumi <watanabe@...>

わたなべです.

41 messages 1999/03/15
[#6329] Re: Ruby 1.3.1-990315 — matz@... (Yukihiro Matsumoto) 1999/03/15

まつもと ゆきひろです

[#6331] Re: Ruby 1.3.1-990315 — Wakou Aoyama <wakou@...> 1999/03/15

青山です。

[#6338] Re: Ruby 1.3.1-990315 — matz@... (Yukihiro Matsumoto) 1999/03/16

まつもと ゆきひろです

[#6347] Re: Ruby 1.3.1-990315 — Wakou Aoyama <wakou@...> 1999/03/16

青山です。

[#6348] Re: Ruby 1.3.1-990315 — matz@... (Yukihiro Matsumoto) 1999/03/16

まつもと ゆきひろです

[#6350] Re: Ruby 1.3.1-990315 — Wakou Aoyama <wakou@...> 1999/03/16

青山です。

[#6353] Re: Ruby 1.3.1-990315 — matz@... (Yukihiro Matsumoto) 1999/03/16

まつもと ゆきひろです

[#6354] Re: Ruby 1.3.1-990315 — Wakou Aoyama <wakou@...> 1999/03/16

青山です。

[#6434] Time#+ — Koji Arai <JCA02266@...>

新井です。

19 messages 1999/03/22
[#6442] Re: Time#+ — matz@... (Yukihiro Matsumoto) 1999/03/22

まつもと ゆきひろです

[ruby-dev:6024] array[last..first] (Re: Subseq of Array)

From: Yasuhiro Fukuma <yasuf@...>
Date: 1999-03-05 22:14:00 UTC
List: ruby-dev #6024
福間@福岡 です。

記事 <19990306025901.A15776@lib1010.esk.co.jp> において、
Wakou Aoyama <wakou@fsinet.or.jp> さんは書きました :

> 先の例では [1,2,3,4,5].select{ [4,3,2] } なんていうのも出来ますし、
> [1,2,3,4,5].select{|last| last..0} というのも出来るようにしてもいいよ
> うな気もします。

前者は Array#indices でできるとして、後者に近い感じで、

  a = [1,2,3,4,5]
  a[4..3]          #==> [5, 4]
  a[4..-3]         #==> [5, 4, 3]
  a[-1..0]         #==> [5, 4, 3, 2, 1] (== a[0..-1].reverse == a.reverse)
  a[3, -2]         #==> [4, 3]

になるようなものを書いてみました。もちろんArray#indicesがRangeを受け取る
ようにしてもいいのですが。

  class Array
    alias _bracket []
    def [](*args)
      a0, a1 = args._bracket(0, 2)
      case args.length
      when 1
        if a0.is_a? Range  # self[from..to]
          first, last = a0.first, a0.last
          first += length if first < 0
          last  += length if last  < 0
          if first > last
            return _bracket(a0.last..a0.first).reverse
          end
        end
      when 2  # self[start, len]
        if a1 < 0
          return _bracket(a0+a1+1, -a1).reverse
        end
      end
      _bracket(*args)
    end
    
    alias _bracket_assign []=
    def []=(*args)
      a0, a1, a2 = args._bracket(0, 3)
      case args.length
      when 2
        if a0.is_a? Range  # self[from..to] = other
          first, last = a0.first, a0.last
          first += length if first < 0
          last  += length if last  < 0
          if first > last
            rhs = if a1.is_a? Array then a1.reverse else a1 end
            return _bracket_assign(a0.last..a0.first, rhs)
          end
        end
      when 3  # self[start, len] = other
        if a1 < 0
          rhs = if a2.is_a? Array then a2.reverse else a2 end
          return _bracket_assign(a0+a1+1, -a1, rhs)
        end
      end
      _bracket_assign(*args)
    end
  end

# 素直に last..first や a?.to_a.reverse を渡さないのは単なる趣味です(^^;


そういえば、

  class Foo
    def []=(*args) p args end
  end
  a = Foo.new
  a[1] = "foo"  #==> [1, "foo"]
  a[] = "foo"   #==> []

は、そういうものなんでしょうか?

---
 “print %w%Just another Ruby hacker,%.join(%% %% % % )”
 Yasuhiro Fukuma (福間 康弘) as Yasu.F @ Kitakyushu.Fukuoka.Japan
 Web site: http://www8.big.or.jp/~yasuf/

In This Thread