1

配列内のすべての要素から減算するルビ関数はありますか?

[2,4,7,8,9] - 8 = [-6,-4,-1,0,1] 

これは機能しませんが、より複雑なケースではこれを実行したくありません。

[2,4,7,8,9] - [8,8,8,8,8] = [-6,-4,-1,0,1] 
4

7 に答える 7

17

が必要ですmap。これにより、Enumerable の各要素に変換を適用し、結果の配列を返すことができます。

[2,4,7,8,9].map { |i| i - 8 } # => [-6, -4, -1, 0, 1]

余談ですが、2番目の例は、このようには機能しません。

[2,4,7,8,9] - [8,8,8,8,8] = [-6,-4,-1,0,1] 

減算は、最初の配列から 2 番目の配列の項目を削除[2,4,7,9]ます[-6,-4,-1,0,1]

于 2013-07-04T14:36:14.933 に答える
0

次の方法で、マップまたは収集メソッドのいずれかを使用できます。

[2,4,7,8,9].collect {|e| e-8}
=> [-6, -4, -1, 0, 1]

[2,4,7,8,9].map {|e| e-8}
=> [-6, -4, -1, 0, 1]
于 2013-07-05T07:09:44.710 に答える
0

JRuby を使用している場合は、NArray と同様の機能を持つ MDArray を試すことができます。ただし、あまりドキュメントはありません。

于 2013-07-10T15:10:15.537 に答える
-2

2 番目のケースでは、外部反復子を使用できます。これを試して:

ary = [8,8,8,8,8].each
[2,4,7,8,9].map{ |e| e - ary.next } # => [-6,-4,-1,0,1]
于 2013-07-04T14:42:53.617 に答える