[#85349] [Ruby trunk Bug#14334] Segmentation fault after running rspec (ruby/2.5.0/erb.rb:885 / simplecov/source_file.rb:85) — pragtob@...
Issue #14334 has been updated by PragTob (Tobias Pfeiffer).
3 messages
2018/02/02
[#85358] Re: [ruby-cvs:69220] nobu:r62039 (trunk): compile.c: unnecessary freezing — Eric Wong <normalperson@...>
nobu@ruby-lang.org wrote:
5 messages
2018/02/03
[#85612] Why require autoconf 2.67+ — leam hall <leamhall@...>
Please pardon the intrusion; I am new to Ruby and like to pull the
6 messages
2018/02/17
[#85634] [Ruby trunk Bug#14494] [PATCH] tool/m4/ruby_replace_type.m4 use AC_CHECK_TYPES for HAVE_* macros — normalperson@...
Issue #14494 has been reported by normalperson (Eric Wong).
3 messages
2018/02/19
[#85674] [Ruby trunk Feature#13618] [PATCH] auto fiber schedule for rb_wait_for_single_fd and rb_waitpid — matz@...
Issue #13618 has been updated by matz (Yukihiro Matsumoto).
5 messages
2018/02/20
[#85686] Re: [Ruby trunk Feature#13618] [PATCH] auto fiber schedule for rb_wait_for_single_fd and rb_waitpid
— Eric Wong <normalperson@...>
2018/02/20
matz@ruby-lang.org wrote:
[#85704] Re: [Ruby trunk Feature#13618] [PATCH] auto fiber schedule for rb_wait_for_single_fd and rb_waitpid
— Koichi Sasada <ko1@...>
2018/02/21
On 2018/02/20 18:06, Eric Wong wrote:
[ruby-core:85409] [CommonRuby Feature#13581] Syntax sugar for method reference
From:
artur.roszczyk@...
Date:
2018-02-05 17:39:20 UTC
List:
ruby-core #85409
Issue #13581 has been updated by sevos (Artur Roszczyk).
Have we ruled out `map(&obj:method)` syntax? Intuitively I find it consistent with `Symbol#to_proc`
~~~ ruby
class Foo
def initialize(array)
@array = array
end
def call
@array
.map(&Math:sqrt)
.map(&self:magic)
.map(&self:boo(2.0))
.map(&:ceil)
.each(&Kernel:puts)
end
private
def magic(x)
x ** 3
end
def boo(a, b)
a / b
end
end
~~~
Alternatively, I am for triple colon:
~~~ ruby
class Foo
def initialize(array)
@array = array
end
def call
@array
.map(&Math:::sqrt)
.map(&self:::magic)
.map(&:::boo(2.0)) # with triple colon we could omit self
.map(&:ceil)
.each(&Kernel:::puts)
end
private
def magic(x)
x ** 3
end
def boo(a, b)
a / b
end
end
~~~
This could translate to:
~~~ruby
class Foo
def initialize(array)
@array = array
end
def call
@array
.map { |x| Math.public_send(:sqrt, x) }
.map { |x| self.send(:magic, x) }
.map { |x| self.send(:boo, x, 2.0) }
.map { |x| x.ceil }
.each { |x| Kernel.public_send(:puts, x) }
end
private
def magic(x)
x ** 3
end
def boo(a, b)
a / b
end
end
~~~
Applying additional arguments (aka `.map(&self:boo(2.0))` is just a proposal - I am not sure if this should be even possible - `Symbol#to_proc` does not allow that.
Another interesting question which we need to answer is:
**What visibility scope should be used when making a method call?**
Given the syntax `receiver:method` or `receiver:::method` if the receiver is `self` then we should expand this syntax sugar to `send()` allowing accessing the private interface of the current object (which is not the item from the iterator - we would use symbol to proc in that case). However, if the receiver is something else, we should expand to `public_send` to disallow accessing private methods of other objects.
Just my two cents ;)
Cheers,
Artur
----------------------------------------
Feature #13581: Syntax sugar for method reference
https://bugs.ruby-lang.org/issues/13581#change-70195
* Author: americodls (Americo Duarte)
* Status: Open
* Priority: Normal
* Assignee:
* Target version:
----------------------------------------
Some another programming languages (even Java, in version 8) has a cool way to refer a method as a reference.
I wrote some examples here: https://gist.github.com/americodls/20981b2864d166eee8d231904303f24b
I miss this thing in ruby.
I would thinking if is possible some like this:
~~~
roots = [1, 4, 9].map &Math.method(:sqrt)
~~~
Could be like this:
~~~
roots = [1, 4, 9].map Math->method
~~~
What do you guys thinking about it?
--
https://bugs.ruby-lang.org/
Unsubscribe: <mailto:ruby-core-request@ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>