Feature #6445
open
request for default length/position on string index
Added by botp (bot pena) over 12 years ago.
Updated over 6 years ago.
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]
- 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
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?
- Target version changed from 2.0.0 to 3.0
- Target version changed from 3.0 to 2.6
- Target version deleted (
2.6)
Also available in: Atom
PDF
Like0
Like0Like0Like0Like0Like0