ошибка: переменные в настоящее время должны иметь начальное значение при вводе на верхнем уровне REPL - PullRequest
0 голосов
/ 06 января 2019
var vb:Float
vb = 12.13
print(vb)

Генерирует следующую ошибку:

ошибка: переменные в настоящее время должны иметь начальное значение при вводе на верхнем уровне REPL

Ответы [ 2 ]

0 голосов
/ 19 февраля 2019

Детская площадка:

ошибка: переменные в настоящее время должны иметь начальное значение при вводе на верхнем уровне 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, которой должно быть присвоено явное значение.
Но когда он обнаруживает, что нет операции присваивания, он выдает ошибку времени компиляции.


Решения:

  1. Явное назначение

    var vb: Float = 12.13 //initializes with an explicit value
    print(vb)
    
  2. Объявить как Implicitly Unwrapped Optional с !

    var vb: Float! //initializes as nil
    vb = 12.13
    print(vb)
    
  3. Объявить как Optional с ?

    var vb: Float? //initializes as nil
    vb = 12.13
    print(vb)
    
  4. Оберните это в функцию:

    func doSomething() {
        var vb: Float
        vb = 12.13
        print(vb)
    }
    
    doSomething()
    

ПРИМЕЧАНИЕ. Этот ответ относится только к объектам верхнего уровня в цикле чтения-печати (REPL)

0 голосов
/ 19 января 2019

Это странная проблема, я знаю Это происходит, когда игровая площадка настроена на ручной запуск Чтобы избежать этой проблемы, вы должны настроить игровую площадку с ручного запуска на автоматически запускается.

  • Нажмите и удерживайте маленький треугольник в верхней части консоли, и параметры появятся
  • Шаг 2: Теперь выберите автоматический запуск оттуда

Вот так !!!!!!

...