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中的'/ ='運算符,這表明它沒有返回值。 –
良好的建議,除了這種情況下,診斷信息只是說意外的結果「可能是意想不到的」! –
我的意思是'推斷有類型'()''... –