嵌套类型数组:为什么编译器会抱怨? [英] Array of Nested Type: Why Does the Compiler Complain?
本文介绍了嵌套类型数组:为什么编译器会抱怨?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
class ClassA {
class ClassB {
}
}
let compiles: [ClassA.ClassB]
let doesNotCompile = [ClassA.ClassB]()
Playground 执行失败:MyPlayground.playground:109:22: 错误:无效使用 '()' 来调用非函数类型 '[ClassA.ClassB.Type]' 的值让doesNotCompile = ClassA.ClassB^~~
Playground execution failed: MyPlayground.playground:109:22: error: invalid use of '()' to call a value of non-function type '[ClassA.ClassB.Type]' let doesNotCompile = ClassA.ClassB ^ ~~
推荐答案
正如您所指出的,它使用以下语法:
As you noted, it works with this syntax:
let arrayOfClassB: [ClassA.ClassB] = []
但是如果我们声明一个 typealias
,[]()
语法是有效的:
but the []()
syntax works if we declare a typealias
:
typealias InnerClass = ClassA.ClassB
let arrayOfAliasesOfClassB = [InnerClass]()
所以我会说这是一个错误,let arrayOfClassB = [ClassA.ClassB]()
也应该不需要类型别名就可以工作.
So I'd say it's a bug, let arrayOfClassB = [ClassA.ClassB]()
should also work without needing a typealias.
更新:Apple 已经一个未解决的错误.
这篇关于嵌套类型数组:为什么编译器会抱怨?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文