Project

General

Profile

Actions

Feature #8038

closed

Keyword `object` to be used instead of `class <<`

Added by alexeymuranov (Alexey Muranov) about 11 years ago. Updated about 11 years ago.

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

Description

=begin
I propose to introduce a new keyword (({object})) and to use it instead of the mysterious (({class <<})):

object foo
def bar
# ...
end
def baz
# ...
end
end

instead of

foo = Object.new
class << foo
def bar
# ...
end
def baz
# ...
end
end
=end

Updated by david_macmahon (David MacMahon) about 11 years ago

As an alternative, how about allowing Object#extend to take a block that would be executed with the context such that methods defined therein would become singleton methods of the object receiving #extend?

Your example would then become:

foo = Object.new
foo.extend do
def bar
# ...
end
def baz
# ...
end
end

Sorry if this is impossible for some reason I don't know of,
Dave

On Mar 6, 2013, at 9:59 PM, alexeymuranov (Alexey Muranov) wrote:

Issue #8038 has been reported by alexeymuranov (Alexey Muranov).


Feature #8038: Keyword object to be used instead of class <<
https://bugs.ruby-lang.org/issues/8038

Author: alexeymuranov (Alexey Muranov)
Status: Open
Priority: Normal
Assignee:
Category: core
Target version: Next Major

=begin
I propose to introduce a new keyword (({object})) and to use it instead of the mysterious (({class <<})):

object foo
def bar
# ...
end
def baz
# ...
end
end

instead of

foo = Object.new
class << foo
def bar
# ...
end
def baz
# ...
end
end
=end

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

Updated by matz (Yukihiro Matsumoto) about 11 years ago

  • Status changed from Open to Rejected

Introducing a new keyword would break a lot of existing programs. We don't want to do unless there's strong requirement.
Making Object#extend to take a block is interesting idea. We will discuss later if it's submitted.

Matz.

Updated by trans (Thomas Sawyer) about 11 years ago

@alexey I sympathize. I tend to avoid class << foo too b/c it "reads" so poorly.

@david (david he) Facets extends #extend to do that actually, but it does not add the the methods directly. Instead it creates an anonymous module which it includes into the singleton class. In this way it behaves the same as extending with a module.

Updated by phluid61 (Matthew Kerwin) about 11 years ago

matz (Yukihiro Matsumoto) wrote:

Introducing a new keyword would break a lot of existing programs. We don't want to do unless there's strong requirement.
Making Object#extend to take a block is interesting idea. We will discuss later if it's submitted.

Matz.

I'm interested in this discussion, including Facets' interpretation. I just created #8046

Actions

Also available in: Atom PDF

Like0
Like0Like0Like0Like0