带结构的Typealias

时间:2014-06-05 20:55:00

标签: generics swift

是否可以在typealiasstructs中使用classes?例如:

struct Foo {
    typealias type = Int
}

编译没有错误。但是,当我使用这个结构时:

let f = new Foo
let bar: f.type

这给了我一个:

  

使用未声明的类型'f'

如何检索此存储类型?

这对于通用结构非常有用,例如:

struct TypeHolder<T> {
    typealias type = T
}

let type1 = new TypeHolder<Int>
let fooint: type1.type

1 个答案:

答案 0 :(得分:2)

是的,你可以这样做。

你犯了两个小错误:

  • 请勿使用new
  • 使用类名访问类型,而不是实例。

实施例

struct Foo {
    typealias type = Int
}

let f = Foo()
let bar: Foo.type = 5