[#46105] [ruby-trunk - Feature #6687][Open] Enumerable#with — "merborne (kyo endo)" <redmine@...>

14 messages 2012/07/02

[#46133] [ruby-trunk - Feature #6688][Open] Object#replace — "prijutme4ty (Ilya Vorontsov)" <prijutme4ty@...>

24 messages 2012/07/03

[#46160] [ruby-trunk - Feature #6693][Open] Don't warn for unused variables starting with _ — "marcandre (Marc-Andre Lafortune)" <ruby-core@...>

15 messages 2012/07/04

[#46200] [ruby-trunk - Bug #6702][Open] Date should be either required or not — "rosenfeld (Rodrigo Rosenfeld Rosas)" <rr.rosas@...>

14 messages 2012/07/05

[#46296] [ruby-trunk - Feature #6717][Open] Method like #instance_eval that returns self (like #tap) — "alexeymuranov (Alexey Muranov)" <redmine@...>

10 messages 2012/07/10

[#46320] [ruby-trunk - Feature #6721][Open] Object#yield_self — "alexeymuranov (Alexey Muranov)" <redmine@...>

25 messages 2012/07/11

[#46339] [ruby-trunk - Bug #6724][Open] waaaaaaant! ( — "zenspider (Ryan Davis)" <redmine@...>

11 messages 2012/07/11

[#46377] [ruby-trunk - Feature #6727][Open] Add Array#rest (with implementation) — "duckinator (Nick Markwell)" <nick@...>

25 messages 2012/07/13

[#46492] [ruby-trunk - Feature #6737][Open] Add Hash#read and alias as #[]. — "trans (Thomas Sawyer)" <transfire@...>

12 messages 2012/07/15

[#46500] [ruby-trunk - Feature #6739][Open] One-line rescue statement should support specifying an exception class — Quintus (Marvin Gülker) <sutniuq@...>

22 messages 2012/07/15

[#46562] [ruby-trunk - Feature #6758][Open] Object#sequence — "merborne (kyo endo)" <redmine@...>

19 messages 2012/07/20

[#46574] [ruby-trunk - Feature #6762][Open] Control interrupt timing — "ko1 (Koichi Sasada)" <redmine@...>

39 messages 2012/07/20

[#46641] [ruby-trunk - Bug #6780][Open] cannot compile zlib module, when cross-compiling. — "jinleileiking (lei king)" <jinleileiking@...>

14 messages 2012/07/23

[#46659] [ruby-trunk - Bug #6783][Open] Infinite loop in inspect, not overriding inspect, to_s, and no known circular references. Stepping into inspect in debugger locks it up with 100% CPU. — "garysweaver (Gary Weaver)" <garysweaver@...>

8 messages 2012/07/23

[#46792] [ruby-trunk - Bug #6799][Open] Digest::*.hexdigest returns an ASCII-8BIT String — "Eregon (Benoit Daloze)" <redmine@...>

11 messages 2012/07/26

[#46799] [ruby-trunk - Feature #6801][Open] String#~ for a here document — "merborne (kyo endo)" <redmine@...>

12 messages 2012/07/27

[#46829] [ruby-trunk - Feature #6806][Open] Support functional programming: forbid instance/class variables for ModuleName::method_name, allow for ModuleName.method_name — "alexeymuranov (Alexey Muranov)" <redmine@...>

7 messages 2012/07/28

[#46832] [ruby-trunk - Bug #6807][Open] Can't compile ruby without ruby — "devcurmudgeon (Paul Sherwood)" <storitel@...>

13 messages 2012/07/28

[#46834] [ruby-trunk - Feature #6808][Open] Implicit index for enumerations — "trans (Thomas Sawyer)" <transfire@...>

15 messages 2012/07/28

[#46838] [ruby-trunk - Bug #6810][Open] `module A::B; end` is not equivalent to `module A; module B; end; end` with respect to constant lookup (scope) — "alexeymuranov (Alexey Muranov)" <redmine@...>

17 messages 2012/07/28

[#46896] (Half-baked DRAFT) new `require' framework — SASADA Koichi <ko1@...>

Hi,

22 messages 2012/07/31

[ruby-core:46191] [ruby-trunk - Feature #4633][Rejected] iterate method / extended version of for

From: "tarui (Masaya Tarui)" <tarui@...>
Date: 2012-07-05 03:04:07 UTC
List: ruby-core #46191
Issue #4633 has been updated by tarui (Masaya Tarui).

Status changed from Assigned to Rejected


Dear Jan,

Sorry that I didn't reply to you sooner.

Thank you for the precious proposal,
but I reject this proposal from the following points.

1. This proposal becomes the change to Kernel, and 
   adding the general name of "iterate"  there has great
   influence.
   I think that it is neccessary to make it the method of Array at least.

2. A use-case is not known.
   Which becomes happy by it?
   There are similar methods already.(zip & transpose)
   Although the difference from "zip" is the number of 
   times of repeating, which is the case needed frequently?

If you can show that a suitable name as a method of Array and the use-case,
please create a ticket newly.

Regards,
Masaya

----------------------------------------
Feature #4633: iterate method / extended version of for
https://bugs.ruby-lang.org/issues/4633#change-27816

Author: rbjl (Jan Lelis)
Status: Rejected
Priority: Normal
Assignee: tarui (Masaya Tarui)
Category: 
Target version: 


=begin
The Ruby world is known for using each, but it does not always look nice (although in most cases it does).

I am proposing an iterate method that is nicely readable and allows easy iteration over multiple objects. It behaves like each for an single argument, but passes nils for Enumerables with multiple sizes:
  iterate [1,2], [3,4,5] do |e,f|
    puts "#{e},#{f}"
  end
  # outputs
  #  1,3
  #  2,4
  #  ,5

A simple Ruby implementation:
  def iterate(*params)
    # params.shift.zip(*params).each{ |*elements| yield *elements }
    raise ArgumentError, "wrong number of arguments (0)" if params.empty?

    first = params.shift
    if params.empty? # single param - like each
      if block_given?
        first.map{|e| yield e }
      else
        first.map.to_enum
      end
    else # multiple params
      max_size = [first, *params].max_by(&:count).size
      padded_first = first.to_a + [nil]*(max_size - first.count)  # append nils
      obj = padded_first.zip *params
      if block_given?
        obj.map{|es| yield *es }
      else
        obj.map.to_enum
      end
    end
  end

A modified version of this request (no new method/statement) could be an alternative usage of for, something like:
  for e,f in [1,2], [3,4,5]
    puts "#{e},#{f}"
  end
  # outputs
  #  1,3
  #  2,4
  #  ,5

This feature request does not add something needed, but I think, Ruby would look even more beautiful.
=end



-- 
http://bugs.ruby-lang.org/

In This Thread

Prev Next