[#44861] Ruby 1.9のARGVのエンコーディング — rubikitch@...

るびきちです。

17 messages 2008/04/26
[#44862] Re: Ruby 1.9のARGVのエンコーディング — Yukihiro Matsumoto <matz@...> 2008/04/26

まつもと ゆきひろです

[#44863] Re: Ruby 1.9のARGVのエンコーディング — "NARUSE, Yui" <naruse@...> 2008/04/26

成瀬です、パッチ用意してから投げようと思ったら出遅れた、

[#44864] Re: Ruby 1.9のARGVのエンコーディング — Yukihiro Matsumoto <matz@...> 2008/04/26

まつもと ゆきひろです

[#44865] Re: Ruby 1.9のARGVのエンコーディング — "U.Nakamura" <usa@...> 2008/04/28

こんにちは、なかむら(う)です。

[#44866] Re: Ruby 1.9のARGVのエンコーディング — "NARUSE, Yui" <naruse@...> 2008/04/28

成瀬です。

[#44868] Re: Ruby 1.9のARGVのエンコーディング — "U.Nakamura" <usa@...> 2008/04/30

こんにちは、なかむら(う)です。

[ruby-list:44837] Re: 計算するハッシュ

From: "5.5" <5.5@...>
Date: 2008-04-15 15:13:16 UTC
List: ruby-list #44837
5.5 です。

るびきちさん,レスありがとうございます。

> そうです。ブロック付きHash.newはmemoizeされた関数とみなせます。
> memoizeはメモリ消費と引き換えに高速化する手法のひとつです。
> ブロック付きHash.newはお手軽memoizeとして定石になっていると思います。

定石ですか。計算結果のキャッシュって,クラス定義してインスタンス
変数に保存しておくのしか見たことがなかったので,この手法を思いつ
いたとき新鮮でした。
ところで,memoize は何と読むのですか? ググっても分かりませんで
した。

> ちなみに複数引数になるとkeyをArrayにしてこんな感じに。
> [[〜]]となるのが不格好ですが…
> 
> f = Hash.new {|h,(x,y)| h[[x,y]] = x+y }
> f[[1,3]]                        # => 4
> f[[2,4]]                        # => 6
> f[[1,3]]                        # => 4

あ! ブロックパラメータって,|h, (x, y)| みたいに書けるんですね!
いままでそういうことはできないと思い込み,不便に思っていました。
これはいいことを聞きました。
『プログラミング言語Ruby 第2版』にも,旧リファレンスマニュアルの
「メソッド呼び出し」のところにも書いてありませんね。

本題に戻って,複数引数の場合については書きたいことがあるのですが,
また改めて。

> ブロックはほんと便利ですよ。

このごろようやく分かってきました。
「Ruby って何がいいわけ?」と聞かれたら,迷わず「まずはブロック」
と答えられそうです。

-- 
5.5@moji.gr.jp

In This Thread