var vb:Float
vb = 12.13
print(vb)
产生以下错误:
错误:在REPL的顶层输入变量时,当前变量必须具有初始值
答案 0 :(得分:1)
这是一个奇怪的问题,我知道 当游乐场设置为手动运行时,会发生这种情况 为了避免此问题,您必须将游乐场设置为从手动运行到 自动运行。
就这样!!!!!!
答案 1 :(得分:1)
错误:在REPL的顶层输入变量时,当前变量必须具有初始值
这表示直接在运动场中声明的变量尚未在声明的同时初始化。
像这样在顶层声明的变量将在声明期间初始化,或者至少在init
中初始化,但是由于游乐场没有init
,因此需要预先初始化。
所以:
var vb: Float //error: variables currently must have an initial value when entered at the top level of the REPL
vb = 12.13
print(vb)
等效于:
class Playground {
var vb: Float
init() {} //Error: Return from initializer without initializing all stored properties
func main() {
vb = 12.13
print(vb)
}
}
顶级对象是直接在操场上编写的对象,即不在函数/类/结构内部,因此它们被视为显式初始化的属性。
因此,var vb: Float
向编译器指示它是类型为vb
的名为Float
的变量,应为其分配一个明确的值。
但是,当发现没有赋值操作时,它将引发编译时错误。
显式分配
var vb: Float = 12.13 //initializes with an explicit value
print(vb)
用Implicitly Unwrapped Optional
声明为!
var vb: Float! //initializes as nil
vb = 12.13
print(vb)
用Optional
声明为?
var vb: Float? //initializes as nil
vb = 12.13
print(vb)
将其包装在函数中
func doSomething() {
var vb: Float
vb = 12.13
print(vb)
}
doSomething()
注意:此答案特定于Read-Eval-Print-Loop(REPL)中的顶级对象