Feature #8038
closedKeyword `object` to be used instead of `class <<`
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) over 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 ofclass <<
https://bugs.ruby-lang.org/issues/8038Author: 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
endinstead of
foo = Object.new
class << foo
def bar
# ...
end
def baz
# ...
end
end
=end
Updated by matz (Yukihiro Matsumoto) over 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) over 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) over 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