[#12387] reducing logical operation — "Nobuyoshi.Nakada" <nobu.nakada@...>

なかだです。

17 messages 2001/03/07
[#12388] Re: reducing logical operation — EGUCHI Osamu <eguchi@...> 2001/03/07

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

[#12389] Re: reducing logical operation — nobu.nakada@... 2001/03/07

なかだです。

[#12391] Re: reducing logical operation — EGUCHI Osamu <eguchi@...> 2001/03/07

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

[#12404] fork in threads — keiju@... (Keiju ISHITSUKA)

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

14 messages 2001/03/09

[#12405] at_exit — keiju@... (Keiju ISHITSUKA)

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

15 messages 2001/03/09
[#12409] Re: at_exit — matz@... (Yukihiro Matsumoto) 2001/03/10

まつもと ゆきひろです

[#12411] Re: at_exit — keiju@... (石塚圭樹) 2001/03/10

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

[#12425] bignum % の結果が負数になることがある — Hisayasu Nakao <h-nakao@...>

最近、ruby-1.6.2を使い出したばかりの中尾です。

39 messages 2001/03/12
[#12427] Re: bignum % の結果が負数になることがある — WATANABE Hirofumi <eban@...> 2001/03/12

わたなべです。

[#12463] Re: bignum % の結果が負数になることがある — Takahiro Kambe <taca@...> 2001/03/13

In message <4518-Mon12Mar2001145434+0900-eban@os.rim.or.jp>

[#12464] Re: bignum % の結果が負数になることがある — matz@... (Yukihiro Matsumoto) 2001/03/13

まつもと ゆきひろです

[#12466] Re: bignum % の結果が負数になることがある — Takahiro Kambe <taca@...> 2001/03/13

In message <984469222.234203.1007.nullmailer@ev.netlab.zetabits.com>

[#12475] Re: bignum % の結果が負数になることがある — matz@... (Yukihiro Matsumoto) 2001/03/14

まつもと ゆきひろです

[#12476] Re: bignum % の結果が負数になることがある — Takahiro Kambe <taca@...> 2001/03/14

In message <984550885.417146.3670.nullmailer@ev.netlab.zetabits.com>

[#12480] Re: bignum % の結果が負数になることがある — matz@... (Yukihiro Matsumoto) 2001/03/14

まつもと ゆきひろです

[#12481] Re: bignum % の結果が負数になることがある — Takahiro Kambe <taca@...> 2001/03/14

In message <984553493.009507.3747.nullmailer@ev.netlab.zetabits.com>

[#12488] Re: bignum % の結果が負数になることがある — matz@... (Yukihiro Matsumoto) 2001/03/14

まつもと ゆきひろです

[#12493] Re: bignum % の結果が負数になることがある — Takahiro Kambe <taca@...> 2001/03/14

In message <984579430.080967.5569.nullmailer@ev.netlab.zetabits.com>

[#12578] require 'win32api' — Kazuhiro NISHIYAMA <zn@...>

require 'win32api'のエラーメッセージがわかりにくいと

21 messages 2001/03/20
[#12579] Re: require 'win32api' — nobu.nakada@... 2001/03/20

なかだです。

[#12598] Re: require 'win32api' — nobu.nakada@... 2001/03/21

なかだです。

[#12582] finalizer problem — keiju@... (Keiju ISHITSUKA)

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

20 messages 2001/03/20
[#12583] Re: finalizer problem — matz@... (Yukihiro Matsumoto) 2001/03/20

まつもと ゆきひろです

[#12585] Re: finalizer problem — keiju@... (石塚圭樹) 2001/03/20

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

[#12591] Re: finalizer problem — matz@... (Yukihiro Matsumoto) 2001/03/20

まつもと ゆきひろです

[#12619] Re: finalizer problem — keiju@... (石塚圭樹) 2001/03/22

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

[#12605] extern inline (ruby.h) ruby-1.6.3 — WATANABE Tetsuya <tetsu@...>

渡辺哲也です。

17 messages 2001/03/22
[#12606] Re: extern inline (ruby.h) ruby-1.6.3 — matz@... (Yukihiro Matsumoto) 2001/03/22

まつもと ゆきひろです

[#12607] Re: extern inline (ruby.h) ruby-1.6.3 — WATANABE Tetsuya <tetsu@...> 2001/03/22

渡辺哲也です。

[#12608] Re: extern inline (ruby.h) ruby-1.6.3 — matz@... (Yukihiro Matsumoto) 2001/03/22

まつもと ゆきひろです

[#12674] Was: [rubyist:0454] Re: to_str — Kenichi Komiya <kom@...1.accsnet.ne.jp>

21 messages 2001/03/25
[#12675] Re: Was: [rubyist:0454] Re: to_str — matz@... (Yukihiro Matsumoto) 2001/03/26

まつもと ゆきひろです

[#12678] Re: Was: [rubyist:0454] Re: to_str — Kenichi Komiya <kom@...1.accsnet.ne.jp> 2001/03/26

[#12681] Re: Was: [rubyist:0454] Re: to_str — matz@... (Yukihiro Matsumoto) 2001/03/26

まつもと ゆきひろです

[#12687] Re: Was: [rubyist:0454] Re: to_str — Kenichi Komiya <kom@...1.accsnet.ne.jp> 2001/03/27

[#12688] Re: Was: [rubyist:0454] Re: to_str — matz@... (Yukihiro Matsumoto) 2001/03/28

まつもと ゆきひろです

[#12710] Re: Was: [rubyist:0454] Re: to_str — Kenichi Komiya <kom@...1.accsnet.ne.jp> 2001/03/31

[ruby-dev:12457] Kernel#=~

From: Shugo Maeda <shugo@...>
Date: 2001-03-13 04:05:02 UTC
List: ruby-dev #12457
前田です。
# Reply-To: ruby-dev@ruby-lang.orgです。

At Sat, 10 Mar 2001 23:05:03 +0900,
nobu.nakada@nifty.ne.jp wrote:
> > data=ARGF.readlines
> > data.each do |x|
> >   puts x if x =~ /45/
> > end
> > と
> > data=ARGF.readlines
> > data.each do |x|
> >   puts x if /45/ =~ x
> > end
> > はどう異なるのでしょうか。
> 
>   上は String#=~、下は Regexp#=~ が呼び出されます。つまり実行の
> 主体が違うわけですが、String#=~ は引数の Regexp に(必要なら変換
> してから)そっくり委譲してしまうので、動作としては同じです。デフォ
> ルトでは。

上はxがnilだとエラーになる、と思いこんでたのですがKernel#=~が呼ば
れますね。

bladeで検索したら以下のような記事が見つかりました。

[ruby-list:2061]:
> |それから些細な事ですが nil に対する =~ がなくなりましたね。
> |結構いい気になって使ってたので(使う方が悪いのだが)あっち
> |こっち直しました。
> 
> 相談せずに外して申し訳なかったですね.
> 
> 「Kernel#=~」は昔,caseの一致判定に「=~」を使っていた頃の名
> 残なので(今は「===」),もういらないかなと思って外しました.
> でも,「foo =~ /pattern/」に便利という側面もあるので,外さな
> い方が良かったのかなあ.

で、結局、

module Kernel
  def =~(other)
    return false
  end
end

となったわけですね。

でもこれだといかにもRegexpのためだけに追加したという感じで、nil +
1はエラーになるのにRegexpだけ特別あつかいなのは納得いかないような
気がするので、どうせなら、

module Kernel
  def =~(other)
    return other === self
  end
end

にしませんか?

あと、こういうのもありました。

[ruby-dev:996]:
> |nil =~ "foo" が undefined method `=~' になって
> |nil =~ /foo/ がエラーにならないのはなぜでしょう?
> |/foo/ =~ nil として扱われるから?
> 
> そうですね.=~の右辺が正規表現の時にはコンパイル時に両辺を取
> り換えたうえインライン展開しています(高速化のため).それを考
> えるとやっぱり Object#=~ とか NilClass#=~ とかを残しておくべ
> きだったかも知れませんね.

Kernel#=~が導入された今も、

irb(main):001:0> module Kernel; undef =~; end
nil
irb(main):002:0> nil.respond_to?(:=~)
false
irb(main):003:0> nil =~ /foo/
nil

という問題はありますね。

これが許されるなら定数の畳み込みとかもやってしまってもよいような
気がしなくもないですけどあんまり効果はないのかな。
=~はループ中に出て来ることが多いから効果があるんですかね。

-- 
前田 修吾

In This Thread

Prev Next