Í
ÍõÇ«
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|, odd?(a)} 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.)
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|, odd?(a)} 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.)