5
標題幾乎解釋了這個問題,我想要做這樣的事情:MyStruct[123]
,而不需要調用函數(MyStruct.doSomething(123)
)或創建一個實例(MyStruct()[123]
)。把它放在類或結構上就沒問題。我可以在Swift中使用靜態下標嗎?
標題幾乎解釋了這個問題,我想要做這樣的事情:MyStruct[123]
,而不需要調用函數(MyStruct.doSomething(123)
)或創建一個實例(MyStruct()[123]
)。把它放在類或結構上就沒問題。我可以在Swift中使用靜態下標嗎?
簡短的回答是沒有。靜態僅限於結構或類中的方法和屬性。下標是運算符,不能設置爲靜態。這是可行的:
struct TimesTable {
let multiplier: Int
subscript(index: Int) -> Int {
return multiplier * index
}
}
let threeTimesTable = TimesTable(multiplier: 3)
print("six times three is \(threeTimesTable[6])")
// prints "six times three is 18"
但你必須做一個threeTimesTable(在這種情況下)的對象。此外,這值得關注:
這就是我發現了,接受,因爲你寫了一個很好的答案=] – gfpacheco
標題不清楚。你想要一個大小爲編譯時間常量的數組,或者你的意思是別的嗎? –
其他的東西,發送到下標的參數可以是任何東西:https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Subscripts.html – gfpacheco
我不認爲你可以有一個下標在一個類上,只在一個類的實例上。 – JAL