From: "boris_stitnicky (Boris Stitnicky)" <boris@...>
Date: 2013-10-24T14:29:02+09:00
Subject: [ruby-core:58010] [ruby-trunk - Feature #9049] Shorthands (a:b,	*) for inclusive indexing


Issue #9049 has been updated by boris_stitnicky (Boris Stitnicky).


I would like to see the hash colon syntax extended to numeric keys:

{ 1: 3, 2: 4 } would mean { 1 => 3, 2 => 4 }.

But this wish would collide with the wish to make 1:3 mean 1..3.

As for letting asterisk mean :*, what would happen if there is no comma? Would

    [ 1, 2, 3 ].reduce *

mean this?

    [ 1, 2, 3 ].reduce() *

or this?

    [ 1, 2, 3 ].reduce( :* )

(I'm not trying to say your proposal is impossible.)
----------------------------------------
Feature #9049: Shorthands (a:b, *) for inclusive indexing
https://bugs.ruby-lang.org/issues/9049#change-42591

Author: mohawkjohn (John Woods)
Status: Open
Priority: Low
Assignee: 
Category: core
Target version: 


=begin
For NMatrix, we've implemented a range shorthand which relies on Hashes: (({m[1=>3,2=>4]})), for example, which returns rows 1 through 3 inclusive of columns 2 through 4 (also inclusive). The original goal was to be able to do (({m[1:3,2:4]})) using the new hash notation, but the new hash notation requires that the key be a symbol ��� it won't accept an integer.

Whether through the hash interface or not, it'd be lovely if there were a shorthand for slicing matrices (and even Ruby Arrays) using colon. This could just be an alternate syntax for ranges, also ��� which might make more sense.

The other related shorthand we'd love to find a way to implement is the all-inclusive shorthand. It gets to be a pain to type (({n[0...n.shape[0],1...3]})) to get a submatrix (a slice), and it's really difficult to read. As a work-around, we currently use the (({:*})) symbol: (({n[:*,1...3]})). But it'd be simpler if there were a way to use a splat operator without an operand as a function argument. It might be a special case where the (({*})) is treated as a (({:*})) automatically. But this edge case might cause confusion with error messages when users make syntax errors elsewhere.

The colon shorthand is the highest priority for us.
=end



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