Swift参数的类型无法正确推断?

用户名

String 具有以下初始化器(其中有许多):

init(count: Int, repeatedValue: Character)
init(count: Int, repeatedValue: UnicodeScalar)

所以下面的工作不应该吗?

let str = String(count:8, repeatedValue:"*")    // Error: "Extra argument 'count' in call"

编译器不应该能够推断类型吗?即使双引号严格的字符串常量,两者CharacterUnicodeScalar符合UnicodeScalarLiteralConvertible协议。那么这是怎么回事?

当然,我总是可以做的,repeatedValue:("*" as Character)但是推断类型有什么意义呢?

杰尼·斯特拉斯纳(Jernej Strasner)

好了,这里的问题(如@Thilo已经提到的)是协议一致性的歧义。

Character > ExtendedGraphemeClusterLiteralConvertible > UnicodeScalarLiteralConvertible
UnicodeScalar > UnicodeScalarLiteralConvertible

编译器会检查这些协议,但是一旦命中,UnicodeScalarLiteralConvertible它就不知道选择哪个初始化程序。

您可以通过扩展String唯一的初始化程序来简化此操作:

extension String {
    init(count: Int, repeatedCharacter: Character) {
        self.init(count: count, repeatedValue: repeatedCharacter)
    }
}

let str1 = String(count: 8, repeatedCharacter: "*")
println(str1)

或(尽管我认为有点过头)还是一个自定义运算符,该运算符使它明确表示为Character

postfix operator • {}
postfix func •(c: Character) -> Character { return c }

let str2 = String(count: 8, repeatedValue: "*"•)
println(str2)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在Swift 2.2中无法正确推断出可选类型

来自分类Dev

无法推断ArrayAdapter <>的类型参数

来自分类Dev

无法推断Class <>的类型参数

来自分类Dev

流程类型无法正确推断联合类型

来自分类Dev

在类型为并集的函数中无法正确推断参数和返回类型

来自分类Dev

Nom:无法推断类型参数的类型

来自分类Dev

无法从用法推断SelectMany类型参数

来自分类Dev

无法推断通用类的类型参数

来自分类Dev

无法推断数据表类型参数

来自分类Dev

Swift通用参数“ T”无法推断

来自分类Dev

Swift:无法推断出通用参数

来自分类Dev

Swift:无法推断通用参数“T”

来自分类Dev

Swift块语法无法推断类型

来自分类Dev

无法推断未使用参数的类型-如果使用参数,则消失

来自分类Dev

无法从帮助程序类型的使用中推断方法的类型参数

来自分类Dev

类型推断-无法推断Monad

来自分类Dev

Eclipse无法从Java 8流中推断正确的类型

来自分类Dev

mypy无法正确推断生成器理解的类型

来自分类Dev

为什么无法阅读推断出正确的类型?

来自分类Dev

无法从用法中推断出开放通用类型参数

来自分类Dev

当用作参数时,无法推断Action委托的返回类型

来自分类Dev

为何编译器无法从用法推断此类型参数

来自分类Dev

为什么Typescript无法推断此函数的参数类型?

来自分类Dev

CS0411:无法从用法mvc推断方法的类型参数

来自分类Dev

Scala无法推断Reader monad实现中的参数类型

来自分类Dev

当用作参数时,无法推断Action委托的返回类型

来自分类Dev

无法推断可变参数模板的模板类型

来自分类Dev

无法从用法中推断出方法的类型参数

来自分类Dev

无法从Model的用法推断出method的类型参数

Related 相关文章

热门标签

归档