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

问题描述 投票:2回答:1

我有以下设置:

// 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: [:])

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

swift compiler-errors
1个回答
0
投票

这是Swift编译器中的一个错误。你可以在这里追踪它:SR-6179

© www.soinside.com 2019 - 2024. All rights reserved.