在Crystal中,有以下任何替代方法,但在b
之后没有创建end
的值吗?
my_val = begin
a = 1
b = 2
a + b
end
b should be undefined here.
我发布它可以使用-> {}.call
(但这会创建一个不需要的闭包)。还有1.times { ... }
,但这看起来很糟糕。在语言本身中是否存在这种惯用语的快捷方式?
答案 0 :(得分:0)
对于您的特定情况,以下可能不是惯用的,但根据您想要实现的目标,这可能是很好的注意:
myval = {% begin %}
a = 1
b = 2
a + b
{% end %}
myval #=> 3
b #=> undefined local variable or method 'b' (did you mean 'p'?)
def myval
a = 1
b = 2
a + b
end
myval #=> 3
b #=> undefined local variable or method 'b' (did you mean 'p'?)
myval = :any.try do
a = 1
b = 2
a + b
end
myval #=> 3
b #=> undefined local variable or method 'b' (did you mean 'p'?)