0
if someCondition() {
    something := getSomething()
} else {
    something := getSomethingElse()
} 

print(something)

在此代码示例中,编译器给出了undefined: something错误。由于这是一个 if else 语句something变量,将在运行时定义,但编译器无法检测到这一点。

我怎样才能避免这个编译错误,这也会在下一个版本中修复吗?

4

2 回答 2

1

这两个something变量是具有不同作用域的两个不同变量。它们不存在于 if/else 块范围之外,这就是您收到未定义错误的原因。

您需要在 if 语句之外定义变量,如下所示:

var something string

if someCondition() {
    something = getSomething()
} else {
    something = getSomethingElse()
} 

print(something)
于 2013-09-16T08:41:21.327 回答
1

在您的代码片段中,您定义了两个something变量,其范围为 if 语句的每个块。

相反,您需要一个范围在 if 语句之外的单个变量:

var something sometype
if someCondition() {
    something = getSomething()
} else {
    something = getSomethingElse()
} 

print(something)
于 2013-09-16T08:41:31.890 回答