2016-02-24 80 views
5

標題幾乎解釋了這個問題,我想要做這樣的事情:MyStruct[123],而不需要調用函數(MyStruct.doSomething(123))或創建一個實例(MyStruct()[123])。把它放在類或結構上就沒問題。我可以在Swift中使用靜態下標嗎?

+0

標題不清楚。你想要一個大小爲編譯時間常量的數組,或者你的意思是別的嗎? –

+0

其他的東西,發送到下標的參數可以是任何東西:https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Subscripts.html – gfpacheco

+1

我不認爲你可以有一個下標在一個類上,只在一個類的實例上。 – JAL

回答

6

簡短的回答是沒有。靜態僅限於結構或類中的方法和屬性。下標是運算符,不能設置爲靜態。這是可行的:

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(在這種情況下)的對象。此外,這值得關注:

http://www.codingexplorer.com/custom-subscripts-swift/

+0

這就是我發現了,接受,因爲你寫了一個很好的答案=] – gfpacheco

相關問題