别名“Bar”不是“Foo”类型的成员

时间:2017-10-18 18:30:57

标签: swift compiler-errors

我有以下设置:

// MARK: Basis

public class Foo {
    public typealias Bar = [String : Int]
}


func take(fooBar: Foo.Bar) {
    print(fooBar)
}


// MARK: Problems

public typealias FooBar = Foo.Bar



public extension Dictionary
    where Key == FooBar.Key,
        Value == FooBar.Value {

    func baz() {
        take(fooBar: self as! FooBar)
    }
}


// MARK: Usages

FooBar().baz()
take(fooBar: [:])

这对我来说似乎很好,但我收到了这个错误:

main.swift:16:31: error: type alias 'Bar' is not a member type of 'Foo'
public typealias FooBar = Foo.Bar
                          ~~~ ^

我非常困惑......它就在那里;我应该能够看到它。

这是最令人困惑的部分:如果我评论extension Dictionary块和baz()的呼叫站点,那么一切正常。

也就是说,编译并运行无问题:

public class Foo {
    public typealias Bar = [String : Int]
}


func take(fooBar: Foo.Bar) {
    print(fooBar)
}


public typealias FooBar = Foo.Bar


take(fooBar: [:])

所以我的问题:发生了什么,我该如何解决?

1 个答案:

答案 0 :(得分:0)

这是Swift编译器中的一个错误。您可以在此处跟踪:SR-6179