【发布时间】:2020-11-16 09:58:39
【问题描述】:
假设我有以下代码:
def my_test(&fn)
#code goes here
end
my_test {
def my_cool_fn(a, b)
a + b
end
}
问题:是否有某种方法可以从my_test 的主体中访问由块定义并作为fn 传递给它的特定方法?†支持>
这是我尝试过的。我受到Struct 通常定义方式的启发:
Person = Struct.new(:name, :age) {
def greet
puts "Person #{name} says hello!"
end
}
mike = Person.new("Mike", 37)
mike.greet
我知道可以通过以下方式使用它来实现类似于我想要的效果,但是,非常不雅。
def my_test(&fn)
ex_struct = Struct.new(:dummy, &fn)
instance = ex_struct.new
puts "The result is: #{instance.my_cool_fn 3, 6}"
end
my_test {
def my_cool_fn(a, b)
a + b
end
}
这将打印预期的The result is: 9。但是,这似乎有点 hacky,我想知道是否有更“正确”的方式来实现这个结果。
(† 出于我的目的,这个问题纯粹是假设性的,出于娱乐目的;我并没有试图解决更大的问题,只是想了解更多关于这种语言的信息。)
【问题讨论】:
标签: ruby function methods proc