一直在 Swift 和 C# 之间来回切换,我不确定我是否忘记了某些事情,或者 C# 是否不容易支持我所追求的。
考虑这个计算初始值的代码Foo
:
// Note: This is a field on an object, not a local variable.
int Foo = CalculateInitialFoo();
static int CalculateInitialFoo() {
int x = 0;
// Perform calculations to get x
return x;
}
有没有办法做这样的事情,而不需要创建单独的一次性使用函数,而是使用即时执行的 lambda/block/whatever?
在 Swift 中,这很简单。您使用立即执行的闭包(花括号)(左括号和右括号),如下所示:
int Foo = {
int x = 0
// Perform calculations to get x
return x
}()
它清晰、简洁,不会使对象的接口与仅用于初始化字段的函数混淆。
注意:要清楚,我不想要计算的属性。我正在尝试初始化一个需要多个语句才能完全完成的成员字段。