[#70843] Re: [ruby-cvs:58952] hsbt:r51801 (trunk): * lib/rubygems: Update to RubyGems HEAD(fe61e4c112). — Eric Wong <normalperson@...>
hsbt@ruby-lang.org wrote:
3 messages
2015/09/17
[ruby-core:70862] [Ruby trunk - Feature #11537] Introduce "Safe navigation operator"
From:
matthew@...
Date:
2015-09-19 04:09:18 UTC
List:
ruby-core #70862
Issue #11537 has been updated by Matthew Kerwin.
As per the discussion a few years ago in #8191, I'm +1 for `.?foo` syntax.
I still have a lingering question about the following; does this print "Hello" twice?
a = Object.new
def a.b
puts "Hello"
end
a.?b.?c
a && a.b && a.b.c # this does
a.try!(:b).try!(:c) # this doesn't (?)
I think it should NOT call `a.b` twice.
----------------------------------------
Feature #11537: Introduce "Safe navigation operator"
https://bugs.ruby-lang.org/issues/11537#change-54242
* Author: Hiroshi SHIBATA
* Status: Open
* Priority: Normal
* Assignee: Yukihiro Matsumoto
----------------------------------------
I sometimes write following code with rails application:
```ruby
u = User.find(id)
if u && u.profile && u.profile.thumbnails && u.profiles.thumbnails.large
...
```
or
```ruby
# Use ActiveSupport
if u.try!(:profile).try!(:thumbnails).try!(:large)
...
```
I hope to write shortly above code. Groovy has above operator named "Safe navigation operator" with "`?.`" syntax.
Ruby can't use "`?.`" operator.
Can we use "`.?`" syntax. like this:
```ruby
u = User.find(id)
u.?profile.?thumbnails.?large
```
Matz. How do you think about this?
--
https://bugs.ruby-lang.org/