相关疑难解决方法(0)

使用其名称(字符串)调用模块的函数

在Python程序中给定带有函数名称的字符串调用函数的最佳方法是什么.例如,假设我有一个模块foo,我有一个内容为的字符串"bar".什么是最好的打电话foo.bar()

我需要获取函数的返回值,这就是我不仅仅使用它的原因eval.我想通过使用eval定义一个返回该函数调用结果的临时函数来做到这一点,但我希望有更优雅的方法来做到这一点.

python object

1580
推荐指数
15
解决办法
63万
查看次数

如何根据名称动态调用方法?

当名称包含在字符串变量中时,如何动态调用方法?例如:

class MyClass
  def foo; end
  def bar; end
end

obj = MyClass.new
str = get_data_from_user  # e.g. `gets`, `params`, DB access, etc.
str  #=> "foo"
# somehow call `foo` on `obj` using the value in `str`.
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?这样做是否存在安全风险?

ruby metaprogramming dynamic

94
推荐指数
5
解决办法
7万
查看次数

获取ruby函数对象本身

在Ruby中,一切都应该是一个对象.但是我有一个很大的问题,就是通常的方式来定义函数对象

def f
    "foo"
end
Run Code Online (Sandbox Code Playgroud)

与Python不同,f是函数结果,而不是函数本身.因此,f(),f,ObjectSpace.f都是"foo".还f.methods返回字符串方法列表.

如何访问函数对象本身?

ruby function object

6
推荐指数
1
解决办法
4425
查看次数

Rails - 作为方法名称的一部分变量

可能重复:
使用Ruby中的函数名称从字符串调用函数

我想做这样的事情:

  def self.greater_than(col_str='events')
    self."#{col_str}"_greater_than(30) # search logic scope method
  end
Run Code Online (Sandbox Code Playgroud)

我怎样才能正确调用它?我猜测语法可能与创建动态方法类似.

ruby variables methods ruby-on-rails dynamic

4
推荐指数
1
解决办法
6534
查看次数