gpt4 book ai didi

Ruby:用 block 初始化对象实例

转载 作者:数据小太阳 更新时间:2023-10-29 07:55:21 26 4
gpt4 key购买 nike

是否可以在不创建临时变量的情况下初始化 Object 实例、对其执行操作并返回该实例?

例如:

def create_custom_object
Object.new do |instance|
instance.define_singleton_method(:foo) { 'foo' }
end
end
# returns an instance, but defines nothing :(
def create_custom_object
Object.new do
self.define_singleton_method(:foo) { 'foo' }
end
end
# same thing

而不是:

def create_custom_object 
object = Object.new
object.define_singleton_method(:foo) { 'foo' }
object
end

最佳答案

你可以使用 tap :

Yields self to the block, and then returns self.

例子:

def create_custom_object
Object.new.tap { |o| o.define_singleton_method(:foo) { 'foo' } }
end

object = create_custom_object
#=> #<Object:0x007f9beb857b48>

object.foo
#=> "foo"

关于Ruby:用 block 初始化对象实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34433883/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com