[ruby-list:495] Re: bugreports(Enum#find/find_all, ruby-mode.el) and Requests

From:
Date: 1996-09-11 07:49:43 UTC
List: ruby-list #495
けいじゅ@SHLジャパンです. 

In [ruby-list :00492 ] the message: "[ruby-list:492] Re:
bugreports(Enum#find/find_all, ruby-mode.el) and Requests ", on Sep/11
10:47(JST) matz@caelum.co.jp (Yukihiro Matsumoto) writes:

>いつもありがとうございます.

いえいえ. ついでにもう一つバグです.

a=2**31
print a-1

を実行してみて下さい. どうも, Bignumの桁下がりのバグみたいですね.

>|1. Enumerable#find/find_all

>これは現在のEnum#findの仕様です.要素があった時に真,無かっ
>た時に偽を返しています.要素には FALSE や nil が含まれること
>もありえるので,見付かった時にそのオブジェクトを返す仕様では
>「見付からなかった時」を示すことができないからです.
>
>もっと良い仕様があれば変更しますけど(でも他との整合性から例
>外を発生させるのは避けたい).

そうですねえ. TRUEだけ返ってきても嬉しくないですねえ. 

Smalltalkでは, 同様のメソッドは,

collection detect: condBlock ifNone: exceptionBlock

となっています.

nilが返ることはあまりないということで

enum.find(proc{...}){...}

で, proc{}はない時に実行されるブロック. デフォルトの動作はnilを帰すと
いうのはどうですか?

あとは, マルチバリューを使う手もありますが...

>|4. Enum#max{...},min{...}
>|5. Enum#members(VAL) Enum#members(VAL){...}
>|
>|Enumerable#grepの == 比較版です. 
>
>これってどういう時に使うんですか? なんかmembersってメソッド
>名からは要素を全部配列にいれたもののような印象があるんですけ
>ど.

名前は, member? から取りました.

配列では約に立たないんですよね...

うーん. あんまり利用価値ないかなあ... これは取り下げさせて下さい.

__
..........................................石塚 圭樹@SHLジャパン(株)...
------------->アドレス変わりました!! e-mail: keiju@shljapan.co.jp <----

In This Thread

Prev Next