Project

General

Profile

Actions

Feature #14498

closed

Class#to_proc

Added by Nondv (Dmitry Non) over 6 years ago. Updated over 6 years ago.

Status:
Rejected
Assignee:
-
Target version:
-
[ruby-core:85694]

Description

Hello!

I was creating a list of class instances via some_list.map { |e| SomeClass.new(e) } and wondered if there's a Class#to_proc to make possible doing some_list.map(&SomeClass).
Well, there is not.

Basically, this is what I suggest:

class Class
  def to_proc
    proc { |*args| self.new(*args) }
  end
end

class Dog
  attr_reader :name

  def initialize(name)
    @name = name
  end
end

names = %w[Lucky Pluto Balto]
names.map(&Dog) # map names to dogs

Here's the pull request:

https://github.com/ruby/ruby/pull/1821


Related issues 1 (0 open1 closed)

Related to Ruby master - Feature #4910: Classes as factoriesRejectedmatz (Yukihiro Matsumoto)Actions
Actions #1

Updated by Nondv (Dmitry Non) over 6 years ago

  • Description updated (diff)

Updated by Hanmac (Hans Mackowiak) over 6 years ago

  • Description updated (diff)

Duplicate of #4910

PS: might be a bit more complicated in C,
but i would like this:

 proc { |*args, **keyargs| self.new(*args, **keyargs) }

so it works with keyargs too

Updated by Nondv (Dmitry Non) over 6 years ago

Hanmac (Hans Mackowiak) wrote:

Duplicate of #4910

PS: might be a bit more complicated in C,
but i would like this:

 proc { |*args, **keyargs| self.new(*args, **keyargs) }

so it works with keyargs too

Hi!
It's not really a duplicate since there is a different suggestion.

I have written PR in C based on Hash#to_proc definition

Updated by matz (Yukihiro Matsumoto) over 6 years ago

  • Status changed from Open to Rejected

Nice try. But I think it's too concise that could lead to unreadable code.

Matz.

Actions #5

Updated by matz (Yukihiro Matsumoto) over 6 years ago

Actions

Also available in: Atom PDF

Like0
Like0Like0Like0Like0Like0