I'm a new user of ruby from China. I love it very much. And I believe
it will become better and better in future. During the study of ruby
these days, I have some small suggestions to ruby.
The suggestions are about the array object, I think we may provide a
much much more flexible way to refer the elements from an array.
Suppose we have an array object [1,2,3,4,5], named "a".
1.Now we have: a[from, len], The first parameter means the result will
start with a[from], and length is len. Then what about a[2,-3]? I think
a negative second parameter should means an reversed array, that is,
a[2,-3] shoule be [3,2,1].
Additionally, we may introduce a more flexible way to express the
"end with". maybe like this: a[..2, 3] (means end with a[2], length is
3, normal direction). here "..2" means end with a[2], and obviously we
should let "2.." means "start with".
Some examples:
a[2.., 3] == a[2,3] -> [3,4,5]
a[2.., -3] == a[2,-3] -> [3,2,1]
a[..2, 3] -> [1,2,3]
a[..2, 3] -> [5,4,3]
2.Now we have: a[2..3] and a[2...3] to discribe a closed interval and a
semi-open interval. I think we should provide an easy way to discrible
any kinds of interval, may be like this:
2..4 means 2,3,4
[2..4) means 2,3
(2..4] means 3,4
(2..4) means 3
the way above may be not beautiful enough, but the function is
required i guess.
Moreover, I guess a[3..1] should means [4,3,2]. it is just the
semantic of "from..to"
3.Some much more ideas:
a[i if odd?(i)] should be [2,4]
a[[1,3,3,4]] should be [2,4,4,5]
a[[1,3..4]] should be [2,4,5]
a[:]{|a[i]|, odd?(a[i])} should be [1,3,5], the block works as a
filter of the result.
And what about the combination of all above?
(Some ideas come from the grammar of matlab. Its array's interface
is great.)