Feature #6445
openrequest for default length/position on string index
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 12 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 mame@tsg.ne.jp
Updated by knu (Akinori MUSHA) over 12 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) about 12 years ago
- Target version changed from 2.0.0 to 3.0
Updated by yhara (Yutaka HARA) about 12 years ago
- Target version changed from 3.0 to 2.6