gpt4 book ai didi

javascript - Ruby相当于一个javascript自执行函数

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

我在 javascript 中经常这样做

some_var || some_var = function(){ return "blah"}();

我想知道 ruby​​ 中的等价物是什么,所以我可以做

some_var ||= # sequence of operations

编辑

Proc.new.call 已引起我的注意,但我也刚刚在某人的代码中遇到了这个问题:

a ||= begin
# do some stuff
# return some stuff
end

这在功能上等同于使用 Proc.new.call 吗??

编辑2人们似乎对我要实现的目标感到困惑。在 javascript 中想象一下:

function someExpensiveFunction(){
# do some really expensive stuff
return "some expensive calculations"
}

a || a = someExpensiveFunction();

显然设置一次a...一次调用昂贵的函数...在这种情况下我不关心范围,我只需要我的返回值是一个计算的事件序列而不是单个值。

我很确定我上面的例子 a ||= begin; ... end; 等价于...

最佳答案

根据您的评论:

don't care about scoping... just want a clean syntax for setting a variable using ||= that involves multiple lines of code

我不确定我是否理解您为什么觉得没有使用 ||= 和 lambda。例如,您可以使用

if(some_var.nil?)
# do some stuff
some_var = result_of_doing_some_stuf
end

或者,正如您在示例中所说:

a ||= begin
# do some stuff
# return some stuff
end

我不清楚为什么您必须使用 proc 或 lambda。

但是如果你执意要使用 ||= 和 lambda,你可以这样做:

calculate = lambda { 1 + 1 }
some_var ||= calculate.call

关于javascript - Ruby相当于一个javascript自执行函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4268227/

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