rap*_*tle 1 ruby arrays ruby-on-rails ruby-on-rails-4
我正在通过一个布尔值的before属性对数组进行排序,这是有效的,但我宁愿不使用true和false作为哈希值,并在true时使用'before',而在when之前使用'after'
a.each { |x| arr << x.answers.group_by(&:before) unless x.answers == nil }
Run Code Online (Sandbox Code Playgroud)
有一个简单的方法吗?
即而不是 true: [], false: []
我更喜欢拥有before: [], after: []
eng*_*nky 11
肯定是这样的
x.answers.group_by {|e| e.before ? :before : :after}
Run Code Online (Sandbox Code Playgroud)
这将创建一个Hash
的{before: [],after:[]}
例如.
a = [1,2,3,4,5,6,7]
a.group_by {|n| n.odd? ? :odd : :even}
#=> {odd: [1, 3, 5, 7], even: [2, 4, 6]}
Run Code Online (Sandbox Code Playgroud)
#group_by
处理来自块的返回响应,true
并false
成为键,但您可以用您喜欢的任何内容替换响应,而这些将作为键.这意味着您可以获得2次以上的退货,例如
a = [1,2,3,4,5,6,7]
a.group_by {|n| n == 2 ? :two : n == 3 ? :three : n.odd? ? :odd : :even}
#=> {:odd=>[1, 5, 7], :two=>[2], :three=>[3], :even=>[4, 6]}
Run Code Online (Sandbox Code Playgroud)
我使用三元运算符来节省空间我不建议将它们嵌套这么深,因为它只是一个例子.
归档时间: |
|
查看次数: |
1170 次 |
最近记录: |