Comme DFD mentionné dans la section des commentaires ceci est une question de portée. Dans de nombreux langages de programmation, vous ne pouvez pas écrire des instructions (expressions) qui ne sont ni une déclaration, ni une initialisation, ni un appel de méthode en dehors de la fonction ou d'une méthode.
Permettez-moi d'expliquer ce que je disais,
Dans une classe ou une définition de la structure des déclarations (expressions) en dehors de la déclaration & initialisation doivent être présents dans la fonction (méthode) définition.
class PayloadTest{
//The below statement is declaration, which declares label is an property of type string.
var label: String
init(label:String) {
//The below statement is an assignment, and it compiles and execute fine as this is inside a init method.
self.label = label
}
}
Cependant, dans votre deuxième extrait,
importation WatchKit importation Fondation
class InterfaceController2: WKInterfaceController {
//The below statement compiles fine even tough it isn't present inside a method coz it is initialization statement.
var payloadtest = PayloadTest(label: "test string init")
//However the compiler complains about the below assignment statement because, this is neither an declaration nor an initialization statement and it should not be outside method.
//So you've to keep this statement inside a method for compiler to stop complaining.
payloadtest.label = "test" // this line gives error - says it was expecting a declaration
....
}
Pour le deuxième travail d'extrait mis la ligne ci-dessous du code dans une méthode et d'appeler cette méthode,
payloadtest.label = "test"
Donc toujours reme mber toute déclaration en dehors de la déclaration, l'initialisation doit être présente dans une définition de méthode ou de fonction et cela s'applique à la plupart des langages.
Veuillez passer en revue les différents niveaux d'oscilloscope présents. HTH :)
Vous avez besoin de rafraîchir sur différents concepts de portée. Essayez de faire de votre classe une classe publique, (bien sûr) vous devrez aussi exposer les différentes choses à l'intérieur. Les autres niveaux d'exposition incluent internal, fileprivate et private. Dans Swift 3, les définitions de fileprivate (non disponible en 2.x) peuvent être différentes avec Swift 4, alors soyez prudent. (Oui, des fichiers séparés pour vos classes signifient que chaque classe est privée par défaut.) – dfd