[#49804] Re: 小数点以下の表示で質問があります。 — Fumiaki Sakamoto <ght8270407fs@...>

自己レスですみません。

14 messages 2014/04/23
[#49805] Re: 小数点以下の表示で質問があります。 — "KISHIMOTO, Makoto" <ksmakoto@...4u.or.jp> 2014/04/23

きしもとです

[#49806] Re: 小数点以下の表示で質問があります。 — Fumiaki Sakamoto <ght8270407fs@...> 2014/04/23

きしもとさま

[#49808] Re: 小数点以下の表示で質問があります。 — Tetsuo Sakaguchi <saka@...> 2014/04/23

阪口です。

[ruby-list:49794] Re: lambdaとかprocとか使ったプログラム

From: "KISHIMOTO, Makoto" <ksmakoto@...4u.or.jp>
Date: 2014-04-16 14:26:23 UTC
List: ruby-list #49794
きしもとです

On Fri, 11 Apr 2014 16:19:27 +0900
牛坂 博則 <ushizaka.hironori@lab.ntt.co.jp> wrote:
> みなさんありがとうございました。
> 
> やはりコードを繰り返し使う時そのコードを保存できるという使い方が一般的み
> たいですね。あまりにもややっこしいので何か特別な使い方があるのか と勘
> ぐってしまいました。
> 
> うまくまとまっていると思われるurlを見つけましたので載せておきます。
> http://d.hatena.ne.jp/shunsuk/20090101/1230816826
> http://www.reactive.io/tips/2008/12/21/understanding-ruby-blocks-procs-and-lambdas/

ややこしい使い方もあるのですが、簡単な例を。

Rubyではブロックは多用されます、よね?

# sample1.rb
open("foo.txt"){|file|
    p file.read
}

(foo.txtは十分短いファイルにしてください)
このブロック付きメソッド呼び出しをラップして、最初にファイル名を
プリントしてから、何かする、というメソッドを作りたい、と思ったと
します。こんな感じになります。

# sample2.rb
def my_open filename, &blk #A
    p filename
    open filename, &blk #B
end

my_open("foo.txt"){|file|
    p file.read
}

明示的にlambdaとかprocとしては使っていませんが、
(1) #A の所の &blk でブロックをオブジェクトにして変数に入れて
(2) #B の所でそのオブジェクトを、openメソッドにブロックとして渡す
といったような、lambdaやprocと同様の「手続きをオブジェクトにする」
という機能を使っています。

In This Thread