Rubyのsend()とは
オブジェクトのメソッドを呼び出すメソッド
呼び出しはハッシュ、文字列どちらでも呼び出せる
メソッドを動的に呼び出す場合に便利
基本
メソッド呼び出しの比較
code: (rb)
class User
def name
"taro"
end
end
user = User.new
# 通常の呼び出し
puts user.name # => taro
# sendで呼び出し
puts user.send(:name) # => taro
puts user.send("name") # => taro
動的にメソッドを呼び出す
複数あるメソッドを動的に呼び出す
code: (rb)
class User
def name
"taro"
end
def age
20
end
end
user = User.new
# 通常の呼び出し
puts user.name #=> taro
puts user.age #=> 20
# 動的な呼び出し
attributes = "name", "age"
attributes.each do |attr|
value = user.send(attr)
puts "#{attr}: #{value}"
end
# => name: taro
# => age: 20
https://docs.ruby-lang.org/ja/latest/method/Object/i/send.html
https://qiita.com/ngron/items/05d3a9624c2c3ec5dbb6