1. ホーム
  2. ruby

[解決済み] Rubyでメソッド名を持つ文字列からメソッドを呼び出す

2022-04-22 13:53:27

質問

どうすれば、彼らが言っているようなことができるのでしょうか? こちら しかし、Rubyで?

オブジェクトに対する関数はどのように行うのでしょうか?また、グローバルな関数はどのように行うのでしょう(jetxeeさんの 答え の投稿にあります)?

サンプルコードです。

event_name = "load"

def load()
  puts "load() function was executed."
end

def row_changed()
  puts "row_changed() function was executed."
end 

#something here to see that event_name = "load" and run load()

UPDATEです。 グローバルメソッドや私のグローバル関数にはどのようにアクセスするのですか?

私はこの追加行を試してみました

puts methods

で、load と row_change はリストされていない。

解決方法は?

オブジェクトに直接関数を呼び出すには

a = [2, 2, 3]
a.send("length")
# or
a.public_send("length")

で、期待通り 3 を返します。

またはモジュール関数の場合

FileUtils.send('pwd')
# or
FileUtils.public_send(:pwd)

とローカルに定義されたメソッド

def load()
    puts "load() function was executed."
end

send('load')
# or
public_send('load')

ドキュメンテーションです。