gpt4 book ai didi

ruby - 在实例方法中分配对象变量

转载 作者:太空宇宙 更新时间:2023-11-03 17:04:42 25 4
gpt4 key购买 nike

我经常使用 ||= 运算符来减少冗余调用。我想拿这样的东西

@my_variable ||= my_calculation_method

把它变成

@my_variable.assign { code_block }

使用这个想法

class Object
def assign
if self.instance_of? NilClass
self = yield
end
end
end

正如您可能已经猜到的那样,分配 self 没有意义,也不起作用。

如何访问 assign 方法中的 @my_variable 指针来修改值?

最佳答案

如果您的初始化逻辑非常重要并且跨越多行(我假设这是问题的前提),那么您可以在惯用的 ruby​​ 中执行以下操作:

@my_variable ||= begin
# code block
end

我通常做的是将逻辑分成两部分。内存与计算分开。你在第一行有这个。

def stats
@stats ||= compute_stats
end

def compute_stats
...
end

我发现 XXX + compute_XXX 的这种模式很容易识别/遵循。

关于ruby - 在实例方法中分配对象变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39233563/

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