如何檢查函數中傳遞的參數是值還是引用類型?例如檢查Swift中的值或引用類型
func isReferenceType(toTest: Any) {
return true // or false
}
正如我們所看到here,我們是不是能夠做到這一點利用仿製藥。
如何檢查函數中傳遞的參數是值還是引用類型?例如檢查Swift中的值或引用類型
func isReferenceType(toTest: Any) {
return true // or false
}
正如我們所看到here,我們是不是能夠做到這一點利用仿製藥。
AnyObject
是任何類類型自動遵循的協議,所以你可以寫:
func isReferenceType(toTest: Any) -> Bool {
return toTest.dynamicType is AnyObject
}
class Foo { }
struct Bar { }
isReferenceType(Foo()) // true
isReferenceType(Bar()) // false
isReferenceType("foo") // false
isReferenceType(123) // false
isReferenceType([1,2,3]) // false
是,但是'isReferenceType(「foo」)'或'isReferenceType(123)'或'isReferenceType([1,2,3 ])'也會返回'true'(如果Foundation被導入)。 –
啊,老沉默的演員。檢查動態類型而不是值本身似乎可以解決這個問題... –
或者可選擇:'func isReferenceType
我還沒有嘗試過,但不解決沒有。 2在你發佈的鏈接中爲你工作? – EmilioPelaez
'AnyObject是什麼? – rghome
對於Swift 3和Xcode 8 - http://stackoverflow.com/a/40538595/746347 – mixel