.dynamicType
속성을 사용하여 값의 유형 객체에 대한 참조를 가져올 수 있습니다. 이것은 파이썬의 type()
함수와 동일하며, in the Swift documentation under Language Reference: Types: Metatype Type으로 언급됩니다.
var intArray = [1, 2, 3]
let typeOfArray = intArray.dynamicType
이 유형의 개체를 사용하여 동일한 배열 유형의 새 인스턴스를 만들 수 있습니다.
var newArray = typeOfArray()
newArray.append(5)
newArray.append(6)
println(newArray)
[5, 6]
우리는이 새로운 값이 부동 추가 시도하여 동일한 유형 (
[Int]
)의 것을 볼 수 있습니다
: 우리는 코코아를 가져 오는 경우
newArray.append(1.5)
error: type 'Int' does not conform to protocol 'FloatLiteralConvertible'
및 배열을 사용 리터럴 유형이 혼합 된 경우 NSArray
이 생성되었음을 알 수 있습니다.
import Cocoa
var mixedArray = [1, "2"]
let mixedArrayType = mixedArray.dynamicType
var newArray = mixedArrayType()
var mutableArray = newArray.mutableCopy() as NSMutableArray
mutableArray.addObject(1)
mutableArray.addObject(1.5)
mutableArray.addObject("2")
println(mutableArray)
(1, "1.5", 2)
그러나이 시점에서 유형 객체의 문자열 설명을 생성하는 일반적인 방법은없는 것처럼 보이므로 여기서는 사용자가 묻는 디버깅 역할을 수행하지 못할 수 있습니다. in SiLo's answer를 사용되는 NSObject
에서 파생
유형
__NSArrayI
println(mixedArrayType.description())
그러나이 같은 스위프트에 내장 된 배열과 같은 유형에없는,하는
.description()
방법이 있습니까.
println(typeOfArray.description())
error: '[Int].Type' does not have a member named 'description'
을하지 얻을 수 있지만, 당신은 자신을 구를 수 : 이제 단순히 (: ___의) 유형을 사용할 수 있습니까? –
내 문장을 더 명확하게 만들기 위해 편집 한 질문이 있습니다 – piaChai
이 지식을 사용하고자하는 코드 유형의 예를 들려 주시겠습니까? 타입이 컴파일 타임에 알려지면'func show (x : T) {println ("\ (x)는 \ (T) 타입이다}}'와 같은 일반적인 함수를 사용할 수있다. 컴파일 타임에 알려지지 않았기 때문에, C 값이 필요한 런타임 메타 데이터를 가지고있는 것처럼 보이지 않기 때문에 이것이 가능할 지 확실하지 않습니다. (슬프게도 나는 애플이 여전히 –