嵌套类型数组:为什么编译器会抱怨? [英] Array of Nested Type: Why Does the Compiler Complain?

查看:31
本文介绍了嵌套类型数组:为什么编译器会抱怨?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆