Int扩展未应用于原始负值

时间:2015-01-22 15:21:48

标签: swift types

我对Int类型的扩展名不适用于原始的负值。我可以解决它,但失败似乎是一个类型推断问题。为什么这不按预期工作?

我第一次在应用程序开发环境中遇到过这种情况,但我在Playground上重新创建了一个简单的形式。我使用的是最新版本的Xcode;版本6.2(6C107a)。

Playground capture

2 个答案:

答案 0 :(得分:1)

这是因为-被解释为应用于整数2的减号运算符,而不是-2数字文字的一部分。

要证明这一点,试试这个:

-(1.foo())

生成相同的错误

  

找不到会员'foo'

该消息可能具有误导性,因为错误是关于尝试将减号运算符应用于foo方法的返回值。

我不知道这是否是故意行为,但它是如何运作的:)

答案 1 :(得分:0)

这可能是一个编译器错误(如果你愿意,可以报告雷达)。使用括号:

println((-2).foo())