클래스 인스턴스 메서드를 사용하여 인스턴스를 만들고 배열에 추가 할 수 있습니다. 클래스 자체의 인스턴스를 만듭니다
나는이 시도 :var vampireArray: [Vampire] = []
class Vampire {
func createSelf() {
vampireArray.append(Vampire())
}
}
을하지만 난 (lldb)
어떤 아이디어가 왜 같은 콘솔에 이상한 오류가?
클래스 인스턴스 메서드를 사용하여 인스턴스를 만들고 배열에 추가 할 수 있습니다. 클래스 자체의 인스턴스를 만듭니다
나는이 시도 :var vampireArray: [Vampire] = []
class Vampire {
func createSelf() {
vampireArray.append(Vampire())
}
}
을하지만 난 (lldb)
어떤 아이디어가 왜 같은 콘솔에 이상한 오류가?
이 코드의 컨텍스트를 알지 못해도 일반적으로 클래스의 인스턴스 외부에서 클래스의 인스턴스를 만들고 추가하면 좋지 않은 아이디어입니다.
대신 원래 createSelf()
을 입력하려는 위치에 vampireArray.append(Vampire())
행을 넣어보십시오.
이 노선을 고수하고 싶었다면, 그것은 정적 메소드이어야하며 var vampireArray: [Vampire] = []
또한 정적 변수 내부 클래스해야 createSelf()
방법처럼 보인다.
편집 : 당신이 수를 액세스하고 싶어 할 때마다, 그리고
class Vampire {
static var VampireCount = 0
init(){
Vampire.VampireCount += 1
}
}
: 당신이 원하는 모든 뱀파이어의 수를 추적하는 경우이
이 좋은 해결책이 될 수있다 , 그냥 사용하십시오 Vampire.VampireCount
아이디어는 뱀파이어 객체 createSelf가 다른 뱀파이어 객체가 생성 될 때입니다. 배열은 뱀파이어의 수를 계속 유지합니다. –
@ManosSerifios 그러나 다른 뱀파이어 오브젝트를 생성하는 것은 초기화 프로그램의 일입니다. 당신은'Vampire()'를 사용하여 그렇게합니다. 새로 만든 뱀파이어로 무언가를하고 싶다면 뱀파이어 배열과 같은 범위에서해야합니다. 배열의 개수가 전적으로 유지되는 경우에는 정수로 변경해야합니다. – TheBrownCoder
@ManosSerifios 가능한 해결책을 제안하기 위해 내 대답을 편집했습니다. – TheBrownCoder
오류 메시지를 표시하십시오 -이 코드는 놀이터에서 작동하므로 다른 곳에 문제가 있습니다. 또한 실제로 달성하고자하는 것을 설명해야하며, 현재 시도보다 다른 해결책을 제안 할 수도 있습니다. – Moritz