[#41531] [Bug #3385] ext/dbm: accept various version of db — Takahiro Kambe <redmine@...>

Bug #3385: ext/dbm: accept various version of db

10 messages 2010/06/03

[#41600] 質問・提案:cgi.rbの後継となるライブラリについて — Dice <tetradice@...>

Diceです。cgi.rbの後継ライブラリについて質問させてください。

16 messages 2010/06/13
[#41606] Re: 質問・提案:cgi.rbの後継となるライブラリについて — Fujioka <fuj@...> 2010/06/14

藤岡です。

[#41607] Re: 質問・提案:cgi.rbの後継となるライブラリについて — KAKUTANI Shintaro <shintaro.kakutani@...> 2010/06/14

かくたにです。

[#41616] Re: 質問・提案:cgi.rbの後継となるライブラリについて — Dice <tetradice@...> 2010/06/15

藤岡さん、かくたにさん、返信ありがとうございます。

[#41617] Re: 質問・提案:cgi.rbの後継となるライブラリについて — Fujioka <fuj@...> 2010/06/16

藤岡です。

[#41656] Re: 質問・提案:cgi.rbの後継となるライブラリについて — Dice <tetradice@...> 2010/06/20

Diceです。藤岡さん、返信ありがとうございます。

[#41623] [Feature:trunk] argument delegation — Nobuyoshi Nakada <nobu@...>

なかだです。

23 messages 2010/06/16
[#41625] Re: [Feature:trunk] argument delegation — Yusuke ENDOH <mame@...> 2010/06/16

遠藤です。

[#41627] Re: [Feature:trunk] argument delegation — Yukihiro Matsumoto <matz@...> 2010/06/16

まつもと ゆきひろです

[#41702] WIN32OLE_METHOD offset_vtbl — kuwamoto shintaro <beuniv@...>

こんばんわ

16 messages 2010/06/23
[#41712] Re: WIN32OLE_METHOD offset_vtbl — Masaki Suketa <masaki.suketa@...> 2010/06/24

助田です。

[ruby-dev:41644] Re: [Feature:trunk] argument delegation

From: Yusuke ENDOH <mame@...>
Date: 2010-06-17 13:29:19 UTC
List: ruby-dev #41644
遠藤です。

2010年6月17日6:31 Yukihiro Matsumoto <matz@ruby-lang.org>:
> |(1) ブロックを引き継がせたいだけ (引数は変えたい) ときに不便

> (1) (略) 今回の動機は「ひとつのことをするのに、ふ
>    たつのことを書かないといけない」という冗長性ですから。

なるほど。「通常の引数とブロック引数をまとめて delegate したい」
と感じたことがあまりなかったので、動機を勘違いしていました。

lib/ を粗っぽく探してみたら、24 箇所ほど見つかりました (メールの
最後に貼りつけてあります) 。それなりに需要はあるのかな。



> が、もともとの動機とは別として、「&」1文字でそのコンテキスト
> のブロックを渡すのは、面白いアイディアだと思います。この場合
> は、仮引数リストのブロック引数がなくても、ブロックを渡すこと
> になるんですかね。

通常の引数は関係なく、ブロック引数を引き継がせたい事例なら、上と
同じような検索で 183 箇所 (上の 24 箇所を含む) も見つかったので、
& の省略記法は是非欲しくなってきました。


$ ruby check.rb
lib/drb/drb.rb
1079:    def method_missing(msg_id, *a, &b)
1083:   return obj.__send__(msg_id, *a, &b)

lib/test/unit/assertions.rb
22:      def assert_raise(*args, &b)
23:        assert_raises(*args, &b)

lib/rake.rb
743:      def create_rule(*args, &block)
744:        Rake.application.create_rule(*args, &block)

lib/rake.rb
844:def task(*args, &block)
845:  Rake::Task.define_task(*args, &block)

lib/rake.rb
862:def file(*args, &block)
863:  Rake::FileTask.define_task(*args, &block)

lib/rake.rb
868:def file_create(args, &block)
869:  Rake::FileCreationTask.define_task(args, &block)

lib/rake.rb
892:def multitask(args, &block)
893:  Rake::MultiTask.define_task(args, &block)

lib/rake.rb
918:def rule(*args, &block)
919:  Rake::Task.create_rule(*args, &block)

lib/scanf.rb
607:  def scanf(str,&b)
608:    return block_scanf(str,&b) if b

lib/scanf.rb
687:  def scanf(fstr,&b)
689:      block_scanf(fstr,&b)

lib/scanf.rb
716:  def scanf(fs,&b)
717:    STDIN.scanf(fs,&b)

lib/rubygems/user_interaction.rb
62:  def use_ui(new_ui, &block)
63:    Gem::DefaultUserInteraction.use_ui(new_ui, &block)

lib/optparse.rb
832:  def accept(*args, &blk) top.accept(*args, &blk) end
836:  def self.accept(*args, &blk) top.accept(*args, &blk) end

lib/optparse.rb
1202:  def on(*opts, &block)
1203:    define(*opts, &block)

lib/optparse.rb
1216:  def on_head(*opts, &block)
1217:    define_head(*opts, &block)

lib/optparse.rb
1230:  def on_tail(*opts, &block)
1231:    define_tail(*opts, &block)

lib/optparse.rb
1425:  def visit(id, *args, &block)
1427:      el.send(id, *args, &block)

lib/csv.rb
2308:def CSV(*args, &block)
2309:  CSV.instance(*args, &block)

lib/erb.rb
334:      def percent_line(line, &block)
336:      return @scan_line.call(line, &block)

lib/erb.rb
334:      def percent_line(line, &block)
341:      @scan_line.call(line, &block)

lib/matrix.rb
1457:  def map2(v, &block) # :yield: e1, e2
1459:    els = collect2(v, &block)

lib/set.rb
613:  def initialize(*args, &block)     # :nodoc:
615:    initialize(*args, &block)

lib/delegate.rb
141:  def method_missing(m, *args, &block)
144:      target.respond_to?(m) ? target.__send__(m, *args, &block) :
super(m, *args, &block)

lib/open-uri.rb
27:  def open(name, *rest, &block) # :doc:
35:      open_uri_original_open(name, *rest, &block)

count: 24


$ cat check.rb
count = 0
Dir.glob("lib/**/*.rb").each do |path|
  next unless File.file?(path)
  open(path) do |file|
    while line = file.gets
      if line =~ /^(\s*)def\s+[\d\w]+(\(.*,.*&.*\))/ # 両方引き継がせる事例
      #if line =~ /^(\s*)def\s+[\d\w]+\(.*(&.*\))/   # ブロック引数を引き継がせる事例
        sig = line
        lineno = file.lineno
        re1 = /^\s{#{ $1.size }}end/
        re2 = Regexp.new(Regexp.quote($2))
        while line = file.gets
          break if re1 =~ line
          if re2 =~ line
            puts path
            puts "#{ lineno }:#{ sig }"
            puts "#{ file.lineno }:#{ line }"
            puts
            count += 1
          end
        end
      end
    end
  end
end
puts "count: #{ count }"

-- 
Yusuke Endoh <mame@tsg.ne.jp>

In This Thread