Project

General

Profile

Actions

Feature #6445

open

request for default length/position on string index

Feature #6445: request for default length/position on string index

Added by botp (bot pena) over 13 years ago. Updated almost 8 years ago.

Status:
Assigned
Target version:
-
[ruby-core:45106]

Description

would be nice if ruby has default for "rest or up to end of string"

eg

"hello"[2,] => should default to "hello"[2..-1]
or
"hello"[2..] => should default to "hello"[2..-1]

Updated by mame (Yusuke Endoh) over 13 years ago Actions #1 [ruby-core:45167]

  • Status changed from Open to Assigned
  • Assignee set to matz (Yukihiro Matsumoto)

Hello,

I created a patch that add a syntactic sugar from (arg..) to (arg..-1).

ary = [1, 2, 3, 4]
p ary[2..] #=> [3, 4]

Matz, what do you think?

diff --git a/parse.y b/parse.y
index 9f9093b..d272492 100644
--- a/parse.y
+++ b/parse.y
@@ -2168,6 +2168,18 @@ arg : lhs '=' arg
$$ = dispatch2(dot3, $1, $3);
%*/
}

  •   | arg tDOT2
    
  •       {
    
  •       /*%%%*/
    
  •   	value_expr($1);
    
  •   	$$ = NEW_DOT2($1, NEW_LIT(INT2FIX(-1)));
    
  •   	if (nd_type($1) == NODE_LIT && FIXNUM_P($1->nd_lit)) {
    
  •   	    deferred_nodes = list_append(deferred_nodes, $$);
    
  •   	}
    
  •       /*%
    
  •   	$$ = dispatch2(dot2, $1, INT2FIX(-1));
    
  •       %*/
    
  •       }
      | arg '+' arg
          {
          /*%%%*/
    

--
Yusuke Endoh

Updated by knu (Akinori MUSHA) over 13 years ago Actions #2 [ruby-core:45357]

It would look nice and work fine with indexing strings and arrays, but if it were put in you would've come to want (1..).each {|i| .. } to work as well.

It might be better to default the omitted end to +Infinity and then make {Array,String,..}#[] understand +Infinity as an index, I guess?

Updated by yhara (Yutaka HARA) almost 13 years ago Actions #3 [ruby-core:48247]

  • Target version changed from 2.0.0 to 3.0

Updated by yhara (Yutaka HARA) almost 13 years ago Actions #4 [ruby-core:48249]

  • Target version changed from 3.0 to 2.6

Updated by naruse (Yui NARUSE) almost 8 years ago Actions #5

  • Target version deleted (2.6)
Actions

Also available in: PDF Atom