Swift(游乐场):使用未解析的标识符 'addAnimaltoZoo'
Swift (Playground): Use of unresolved identifier 'addAnimaltoZoo'
嗨 Whosebug 的人,
我最近开始学习 iOS 开发。我已经对 Java 和 Python 有了一点经验,但是 Swift 对我来说是一种全新的语言。
我试图应用 Animal classic 示例 Class 来理解 playground 环境、语法和[逻辑?]。
2个主要问题:
关于错误(Animal Init 的最后一行)我想我明白为什么我会在这里收到错误,但我很困惑如何解决它?我必须做一些可选的吗?还是我完全误解了 MVC 格式?我试图在 init 中移动该方法,但在引用 Zoo var 时遇到问题...如果我在 class 定义之前移动 zoo var,则会出现 Animal.[=14= 错误]
我是否必须为 classes 创建一个 toString 类型的方法来打印
Swift 中的正常情况?我试图进行搜索,但不断
找到了结构的资源而不是 classes...所以我有点
这里也一头雾水
提前致谢<3
代码如下:
import UIKit
print("Welcome to the Animal Playground.")
//Simple Animal Class
class Animal {
var name : String
var species : String
var age : Int
init(name:String, species:String, age:Int) {
self.name = name
self.species = species
self.age = age
addAnimaltoZoo(animal: self) **//Use of unresolved identifier 'addAnimaltoZoo'**
}
}
//Everything afterward would be part of the AppController
var zoo = [Int: Animal]()
var animalCounter = 0;
func addAnimaltoZoo(animal: Animal) {
zoo[animalCounter] = animal
animalCounter += 1
}
var Tom = Animal(name: "Tom", species: "Cat", age: 105)
var Jerry = Animal(name: "Jerry", species: "Mouse", age: 108)
for (animalID, animalDetails) in zoo {
print("\(animalID): \(animalDetails)")
}
打印:
Welcome to the Animal Playground.
0: __lldb_expr_4.Animal
1: __lldb_expr_4.Animal
您有 class class Animal
并且正在调用 addAnimalToZoo(animal:Animal)
但是,它超出了 Animal
的范围。请注意 class Animal
的 { }
括号在 addAnimalToZoo(animal:Animal)
初始化之前关闭。因此,class Animal
看不到这个引用。你可以,但是这样做
//Everything afterward would be part of the AppController
var zoo = [Int: Animal]()
var animalCounter = 0;
func addAnimaltoZoo(animal: Animal) {
zoo[animalCounter] = animal
animalCounter += 1
}
var Tom = Animal(name: "Tom", species: "Cat", age: 105)
var Jerry = Animal(name: "Jerry", species: "Mouse", age: 108)
addAnimalToZoo(animal: Tom)
addAnimalToZoo(animal:Jerry
for (animalID, animalDetails) in zoo {
print("\(animalID): \(animalDetails)")
}
注意:我会保持这样,因为 Animal
和 Zoo
不一样,因此,addAnimalToZoo(animal:Animal)
不应该在 class Animal
.
关于 animalDetails
,我不太确定那里发生了什么或正在打印什么。看起来它正在打印 zoo.enumerated()
,您可以从 enumerated() for Array.
中看到
如果你想打印动物变量,你应该做的,或者我做的,也许有更好的方法,就是创建一个方法并调用它。
class Animal {
var name : String
var species : String
var age : Int
init(name:String, species:String, age:Int) {
self.name = name
self.species = species
self.age = age
}
func printAnimalDetails() {
print("Age: \(self.age) -- Species: \(self.species) -- Name: \(self.name)")
}
}
那就叫它
for (index, animal) in zoo.enumerated() {
print("\(index)", terminator: "") //The terminator allows it to NOT create a new line on the next print statement.
animal.printAnimalDetails()
}
嗨 Whosebug 的人,
我最近开始学习 iOS 开发。我已经对 Java 和 Python 有了一点经验,但是 Swift 对我来说是一种全新的语言。
我试图应用 Animal classic 示例 Class 来理解 playground 环境、语法和[逻辑?]。
2个主要问题:
关于错误(Animal Init 的最后一行)我想我明白为什么我会在这里收到错误,但我很困惑如何解决它?我必须做一些可选的吗?还是我完全误解了 MVC 格式?我试图在 init 中移动该方法,但在引用 Zoo var 时遇到问题...如果我在 class 定义之前移动 zoo var,则会出现 Animal.[=14= 错误]
我是否必须为 classes 创建一个 toString 类型的方法来打印 Swift 中的正常情况?我试图进行搜索,但不断 找到了结构的资源而不是 classes...所以我有点 这里也一头雾水
提前致谢<3
代码如下:
import UIKit
print("Welcome to the Animal Playground.")
//Simple Animal Class
class Animal {
var name : String
var species : String
var age : Int
init(name:String, species:String, age:Int) {
self.name = name
self.species = species
self.age = age
addAnimaltoZoo(animal: self) **//Use of unresolved identifier 'addAnimaltoZoo'**
}
}
//Everything afterward would be part of the AppController
var zoo = [Int: Animal]()
var animalCounter = 0;
func addAnimaltoZoo(animal: Animal) {
zoo[animalCounter] = animal
animalCounter += 1
}
var Tom = Animal(name: "Tom", species: "Cat", age: 105)
var Jerry = Animal(name: "Jerry", species: "Mouse", age: 108)
for (animalID, animalDetails) in zoo {
print("\(animalID): \(animalDetails)")
}
打印:
Welcome to the Animal Playground.
0: __lldb_expr_4.Animal
1: __lldb_expr_4.Animal
您有 class class Animal
并且正在调用 addAnimalToZoo(animal:Animal)
但是,它超出了 Animal
的范围。请注意 class Animal
的 { }
括号在 addAnimalToZoo(animal:Animal)
初始化之前关闭。因此,class Animal
看不到这个引用。你可以,但是这样做
//Everything afterward would be part of the AppController
var zoo = [Int: Animal]()
var animalCounter = 0;
func addAnimaltoZoo(animal: Animal) {
zoo[animalCounter] = animal
animalCounter += 1
}
var Tom = Animal(name: "Tom", species: "Cat", age: 105)
var Jerry = Animal(name: "Jerry", species: "Mouse", age: 108)
addAnimalToZoo(animal: Tom)
addAnimalToZoo(animal:Jerry
for (animalID, animalDetails) in zoo {
print("\(animalID): \(animalDetails)")
}
注意:我会保持这样,因为 Animal
和 Zoo
不一样,因此,addAnimalToZoo(animal:Animal)
不应该在 class Animal
.
关于 animalDetails
,我不太确定那里发生了什么或正在打印什么。看起来它正在打印 zoo.enumerated()
,您可以从 enumerated() for Array.
如果你想打印动物变量,你应该做的,或者我做的,也许有更好的方法,就是创建一个方法并调用它。
class Animal {
var name : String
var species : String
var age : Int
init(name:String, species:String, age:Int) {
self.name = name
self.species = species
self.age = age
}
func printAnimalDetails() {
print("Age: \(self.age) -- Species: \(self.species) -- Name: \(self.name)")
}
}
那就叫它
for (index, animal) in zoo.enumerated() {
print("\(index)", terminator: "") //The terminator allows it to NOT create a new line on the next print statement.
animal.printAnimalDetails()
}