begin/end 是否有更严格范围的替代方案?
Are there alternatives to begin/end with stricter scope?
在 Crystal 中,是否有以下替代方法,但没有在 end
之后创建 b
的值?
my_val = begin
a = 1
b = 2
a + b
end
b should be undefined here.
我宣布可以使用 -> {}.call
(但这会创建一个不需要的关闭)。还有 1.times { ... }
,但这看起来很老套。语言本身是否有惯用的捷径?
对于您的特定情况,以下可能不是惯用的,但根据您想要实现的目标,这可能是一个很好的注意事项:
宏
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'?)
在 Crystal 中,是否有以下替代方法,但没有在 end
之后创建 b
的值?
my_val = begin
a = 1
b = 2
a + b
end
b should be undefined here.
我宣布可以使用 -> {}.call
(但这会创建一个不需要的关闭)。还有 1.times { ... }
,但这看起来很老套。语言本身是否有惯用的捷径?
对于您的特定情况,以下可能不是惯用的,但根据您想要实现的目标,这可能是一个很好的注意事项:
宏
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'?)