Почему не присваивается значение?


#1

Есть такой файл, в нем структура и текстфилды. Почему невозможно присвоить значение текстфилду? И что за топ-левел в данном случае, ведь структура закрыта, а других объектов здесь нет.


#2

Ты на глобальном уровне выполняешь какое-то действие над объектом. Чтобы понять, почему так нельзя - ок - подумай, когда выполнится данный код, если например таких файлов несколько?


#3

https://developer.apple.com/swift/blog/?id=7


#4

https://developer.apple.com/swift/blog/?id=7

Спасибо за ссылку, очень хорошая статья. Но она, увы, написана в основном для тех, кто уже в теме, а для тех кто начинает в этом разбираться вопросов еще остается много. Например, объявлена структура, как в этом примере. Чтобы ее использовать нужно создать экземпляр. Вопрос - где его создавать? Внутри того же файла, где объявлена эта структура или в других файлах? Если в других файлах, то там опять же свои классы и структуры, этот экземпляр делать внутри них или где-то отдельно? Как-то смутно себе это все представляю, вариантов вроде как много и непонятно чем руководствоваться.


#5

В каком смысле несколько? Этой константе значение присваивается только здесь, в других файлах такого нет.

И почему объявить константу на этом уровне возможно, а присвоить этой же константе значение невозможно?


#6

Неверно выразился. Есть у тебя 2 разных файла, в них какие-то действия над объектами. В каком порядке они выполнятся?

Объявить константу можно, потому что это будет просто объявление - объявленная на глобальном уровне величина будет реально создана в ленивом виде лишь при первом обращении к ней.


#7

Это пока белое пятно. Какие здесь правила?


#8

Никак. На этом уровне нельзя выполнять действия.

В том и суть - Вы можете вводить какие-то единицы кода, например константы, но ничего из этого не будет создано реально, пока не будет откуда-то вызвано.


#9

Ок, объявить константу можно, а присвоить ей значение нельзя. Как тогда присвоить это значение? Написать эту строку в другом файле? И где там это можно сделать - на топ-левеле или внутри класса?

Не въезжаю в эту систему, если класс - это шаблон, то мы должны работать с его экземплярами. Тогда где они создаются, если каждый файл это по сути дела отдельный шаблон?


#10

Вы можете присвоить значение переменной и даже в сложных выражениях через замыкания.

Использовать их можно в других частях программы.

  1. Консольная программа - точка входа main.swift, все что пишется там будет выполнятся последовательно. Относитесь как к функции main в других языках
  2. Графическое приложение - бутстрапинг через AppDelegate, затем управление передается контроллеру в раскадровке первому или контроллеру документа.
  3. Для игровых площадок - файл каждой страницы исполняется последовательно.

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