From: tom.enebo@gmail.com
To: ruby-core@ruby-lang.org
Subject: [ruby-core:71364] [Ruby trunk - Feature #11537] Introduce "Safe navigation operator"
Date: Fri, 06 Nov 2015 01:50:22 +0000 [thread overview]
Message-ID: <redmine.journal-54732.20151106015021.d3f702e49a43d263@ruby-lang.org> (raw)
In-Reply-To: redmine.issue-11537.20150918092909@ruby-lang.org
Issue #11537 has been updated by Thomas Enebo.
Eric Wong wrote:
> tom.enebo@gmail.com wrote:
> > How about '\'? We can pay homage to Windows file delimeter?
> >
> > a\b\c
> >
> > I just scanned lexer and I cannot think of a reason off the top of my head why not...what does \ mean? who knows...what for .? mean? I don't know that either. This suggestion is twice as efficient though since it only uses one character.
>
> It's already used for continuing long lines.
well it is but that is not really an issue since it only will acknowledge '\' if right before end of line (lexer just says spaceSeen and loops back up to top of lexer for its next token). What is really weird to me is if it isn't at the end of the line it returns as the token '\\'. I see nowhere in the grammar where ruby acknowledges this as a valid token. Any other literal escaping happens within lexing. Did I just find a vestigial organ or am I missing something simple?
In any case it looks like Matz might have picked something other than .?, which was main reason I came up with \ as an idea (I feel reversing order from other languages will confuse them more than it will help -- so pick something different altogether).
-Tom
----------------------------------------
Feature #11537: Introduce "Safe navigation operator"
https://bugs.ruby-lang.org/issues/11537#change-54732
* Author: Hiroshi SHIBATA
* Status: Closed
* 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/
next prev parent reply other threads:[~2015-11-06 1:21 UTC|newest]
Thread overview: 48+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <redmine.issue-11537.20150918092909@ruby-lang.org>
2015-09-18 9:29 ` [ruby-core:70854] [Ruby trunk - Feature #11537] [Open] Introduce "Safe navigation operator" shibata.hiroshi
2015-09-18 9:31 ` [ruby-core:70855] " P.S.V.R
2015-09-18 14:34 ` [ruby-core:70856] [Ruby trunk - Feature #11537] " rr.rosas
2015-09-19 0:42 ` [ruby-core:70861] " nobu
2015-09-19 4:09 ` [ruby-core:70862] " matthew
2015-09-23 17:04 ` [ruby-core:70892] " rr.rosas
2015-10-07 14:30 ` [ruby-core:71012] " matz
2015-10-07 16:51 ` [ruby-core:71015] " sawadatsuyoshi
2015-10-21 7:45 ` [ruby-core:71129] " matz
2015-10-21 8:05 ` [ruby-core:71130] " matz
2015-10-21 10:21 ` [ruby-core:71132] " rr.rosas
2015-10-21 19:29 ` [ruby-core:71135] " ruby-core
2015-10-21 23:33 ` [ruby-core:71137] " nobu
2015-10-22 16:29 ` [ruby-core:71157] " treznick
2015-10-22 16:34 ` [ruby-core:71158] " ary
2015-10-22 16:45 ` [ruby-core:71160] " merch-redmine
2015-10-22 21:19 ` [ruby-core:71166] " Matthew Kerwin
2015-10-23 3:58 ` [ruby-core:71169] " treznick
2015-10-26 5:10 ` [ruby-core:71182] " transfire
2015-10-26 11:22 ` [ruby-core:71184] " garysweaver
2015-10-26 12:25 ` [ruby-core:71186] " wycats
2015-10-26 13:28 ` [ruby-core:71189] " nobu
2015-10-26 13:58 ` [ruby-core:71190] " rr.rosas
2015-10-27 9:13 ` [ruby-core:71213] " philip.claren
2015-10-27 11:47 ` [ruby-core:71215] " rr.rosas
2015-10-27 12:01 ` [ruby-core:71216] " mame
2015-10-27 12:07 ` [ruby-core:71217] " rr.rosas
2015-10-27 12:24 ` [ruby-core:71218] " mame
2015-10-27 12:31 ` [ruby-core:71219] " rr.rosas
2015-10-27 12:45 ` [ruby-core:71220] " mame
2015-10-27 14:31 ` [ruby-core:71221] " matz
2015-10-29 19:32 ` [ruby-core:71271] " alonecomp
2015-10-29 21:00 ` [ruby-core:71273] " Matthew Kerwin
2015-11-04 0:01 ` [ruby-core:71322] " transfire
2015-11-04 0:07 ` [ruby-core:71324] " transfire
2015-11-04 0:32 ` [ruby-core:71325] " nobu
2015-11-04 0:44 ` [ruby-core:71326] " matz
2015-11-05 23:01 ` [ruby-core:71360] " tom.enebo
2015-11-05 23:42 ` [ruby-core:71361] " Eric Wong
2015-11-06 1:25 ` [ruby-core:71363] " matz
2015-11-06 1:50 ` tom.enebo [this message]
2015-11-06 2:21 ` [ruby-core:71365] " nobu
2015-11-06 4:16 ` [ruby-core:71370] [Ruby trunk - Feature #11537] [Open] " shugo
2015-11-06 18:06 ` [ruby-core:71373] [Ruby trunk - Feature #11537] " rr.rosas
2015-11-07 0:49 ` [ruby-core:71374] " nobu
2015-11-07 2:32 ` [ruby-core:71375] " ko1
2015-11-09 14:39 ` [ruby-core:71417] " tom.enebo
2015-11-13 10:46 ` [ruby-core:71483] " uwe
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-list from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://www.ruby-lang.org/en/community/mailing-lists/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=redmine.journal-54732.20151106015021.d3f702e49a43d263@ruby-lang.org \
--to=ruby-core@ruby-lang.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).