Xcode 7.2,Swift 2.0: 下面的代码在调试区域打印“15()”。我本来期望它打印“15 1”。为什么要打印括号?Swift playground打印圆括号
var n = 15
print(n, n /= 10)
Xcode 7.2,Swift 2.0: 下面的代码在调试区域打印“15()”。我本来期望它打印“15 1”。为什么要打印括号?Swift playground打印圆括号
var n = 15
print(n, n /= 10)
这是因为n /= 15
表达式返回Void
,因为/=
运营商斯威夫特返回Void
。我们可以看到,从它的声明:
public func /=<T : _IntegerArithmeticType>(inout lhs: T, rhs: T)
而由于雨燕,Void
是空的元组的别名:
/// The empty tuple type.
///
/// This is the default return type of functions for which no explicit
/// return type is specified.
public typealias Void =()
第二个参数/表达传递给print
被打印为()
。
如果您有一个“意外”结果:1)使用编译的项目代替,诊断消息有时会更好。 - 2)将表达式拆分成单独的步骤。在你的情况:'让foo = n/= 10'导致*“警告:常量'foo'被推断为类型'()',这可能是意想不到的”*。 - 3)按住Command键并点击Xcode中的'/ ='运算符,这表明它没有返回值。 –
良好的建议,除了这种情况下,诊断信息只是说意外的结果“可能是意想不到的”! –
我的意思是'推断有类型'()''... –