Techioz Blog

配列とオブジェクトの属性を反復処理するより良い方法はありますか? [閉まっている]

概要

(編集:今、私はコーディングに ChatGPT を使用しています…SO ポリシーやモデレーターよりも 1000 倍優れています)

機能する解決策を見つけましたが、ブロックの大量のコピー/ペーストを実行しましたが、変更されるのはインスタンスのパラメータのみです( myobject.red 、 myobject.blue 、 myobject. yellow )。このメソッドをリファクタリングしてみます。 Myobject のインスタンスがあるので、各パラメーターにデータをプッシュする必要があります。どこかにエレガントな解決策が存在すると思います。

データのセットを作成するには、配列を反復処理します。配列の各結果は、インスタンスの対応するパラメーターにプッシュする必要があります。ありがとう

class Myobject
 def initialize
  @blue = blue
  @red = red
  @yellow = yellow
 end
end

def mymethod
  param = ['foo','bar','jaa']
  
  param.each { |param|
    case param
    when 'foo'
      data = collect_method
      myobject.blue.push(data)
    when 'bar'
      data = collect_method
      myobject.red.push(data)
    when 'jaa'
      data = collect_method
      myobject.yellow.push(data)
    end
  end
end

解決策

def mymethod
  params = {'foo'=>:blue,'bar'=>:red,'jaa'=>:yellow}
  
  params.each do |k,v|
    my_object.send(v).push(collect_method(k))
  end
end

ここで、collect_method は Myobject クラスの別のメソッドです