return false 在 IE 下失效了?
拆分数组
galeki
posted @ 2008年5月11日 06:52
in Ruby&Rails进修
, 461 阅读
Chito 也支持浮动窗口了
Ruby 中的 Array 类提供了非常实用的 select 和 reject 方法,可以方便的从数组中挑出或剔除符合条件的元素:
-
a = [1,2,3,4,5,6,7,8]
-
a.select {|x| x % 2 == 0}
-
>> [2,4,6,8]
如果想要把数组拆分成两个集合,一个符合某个条件,一个不符合,要怎么办呢?
可以先写一个 select 然后再来个 reject:
-
a = [1,2,3,4,5,6,7,8]
-
even = a.select {|x| x % 2 == 0}
-
odd = a.reject {|x| x % 2 == 0}
-
>> even = [2,4,6,8]
-
>> odd = [1,3,5,7]
这样的话,不仅条件要重复写两遍,数组中的元素也要遍历两遍
。
可以利用 Ruby 可以返回多个值的特性,来写个 separate 函数:
-
class Array
-
def separate
-
yes, no = [], []
-
-
self.each do |x|
-
yield(x) ? yes << x : no << x
-
end
-
-
return yes, no
-
end
-
end
这样,数组拆分一次就可以搞定了
:
-
even, odd = a.separate {|x| x % 2 == 0}
- 全局相关文章
-
- 无匹配
- 相关文章
-
- 无匹配

2008年5月11日 09:45 或者: a = [1,2,3,4,5,6,7,8] even = a.select {|x| x % 2 == 0} odd = a - even :)
2008年5月11日 09:48
even = a.select {|x| x % 2 == 0}
odd = a - even
刚刚格式乱了
2008年5月11日 12:23
2008年5月22日 11:11
惭愧,昨天翻了下the ruby way, 发现ruby自己已经实现了seperate方法,不过名字叫partition:
=> [1, 2, 3, 4, 5, 6]
irb(main):002:0> a.partition{|x| x%2==0}
=> [[2, 4, 6], [1, 3, 5]]
irb(main):003:0>
2008年5月22日 19:24