Ruby 以简洁的方式评估和分配方法值

Ruby 以简洁的方式评估和分配方法值,ruby,Ruby,在Ruby中,有没有一种方法可以指定一个值,该值也用于以简洁的方式进行计算,也就是说,在计算和分配它之前,不必将方法的结果存储在下面的例子中 def expensive_operation ... end ary = [] ary << expensive_operation unless expensive_operation.nil? 如果我正确理解了您的问题,您正在寻找一种更好的方式来编写以下内容: ary = [] result = expensive_operation

在Ruby中,有没有一种方法可以指定一个值,该值也用于以简洁的方式进行计算,也就是说,在计算和分配它之前,不必将方法的结果存储在下面的例子中

def expensive_operation
...
end

ary = []
ary << expensive_operation unless expensive_operation.nil?

如果我正确理解了您的问题,您正在寻找一种更好的方式来编写以下内容:

ary = []
result = expensive_operation
ary << result unless result.nil?
或:

compact方法将从数组中删除所有nil值

或者,如果您想对照其他内容进行检查,您可以使用拒绝:

这将删除块返回true的所有元素

如果这实际上更可读取决于环绕码


如果没有存储方法的结果,您的意思是没有实际运行昂贵的操作,那么不,这是不可能的。。。这就像是说,我能知道2+2的结果是什么而不实际计算2+2吗?

如果你不这样做,你怎么知道一个昂贵的操作是否会做什么?如果您这样做了,但不存储该值,那么如果您想要该值,您不需要再次这样做吗?您可以进行飞行前检查,以确保该操作的输入可用且合理,并将产生可用的结果。是我们存储可能需要多次计算的值的地方,这有助于减少系统负载,但它仍然必须至少计算一次。我认为这取决于昂贵的开放计算的内容和算法的工作方式。我可以想象这样的情况,在这种情况下,很容易判断算法无法返回有效的结果,但在可能的情况下,仍然很难判断准确的结果。例如,在尝试计算昂贵的_操作之前,您可能会知道某些先决条件不满足。你能告诉我们更多关于手术的情况吗?在回答之前,请至少试着理解这个问题,如果你不理解,请让我澄清。我从来没有说过我们不需要计算结果。当然,我们需要计算结果,我只是问Ruby中是否有一些语法糖,可以让你计算,计算,然后给我分配一个简洁的方法。谢谢,你正确地理解了我。我问这个问题的唯一原因是在Ruby中通常有很多不同的方法来完成相同的事情,所以我只是对其他方法感兴趣。存储并不意味着计算:
ary = [expensive_operation].compact
ary = []
ary += [expensive_operation].compact
ary = [expensive_operation].reject { |e| e == '' }