Project

General

Profile

Actions

Feature #6445

open

request for default length/position on string index

Added by botp (bot pena) about 10 years ago. Updated over 4 years ago.

Status:
Assigned
Priority:
Normal
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) about 10 years ago

  • 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) almost 10 years ago

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) over 9 years ago

  • Target version changed from 2.0.0 to 3.0

Updated by yhara (Yutaka HARA) over 9 years ago

  • Target version changed from 3.0 to 2.6
Actions #5

Updated by naruse (Yui NARUSE) over 4 years ago

  • Target version deleted (2.6)
Actions

Also available in: Atom PDF