2016-02-24 9 views
5

Il titolo spiega molto la domanda, vorrei fare qualcosa di simile: MyStruct[123] senza la necessità di chiamare una funzione (MyStruct.doSomething(123)) o creare un'istanza (MyStruct()[123]). Averlo su classi o strutture sarebbe ok.Posso avere pedice statico in Swift?

+0

Il titolo è chiaro. Vuoi un array le cui dimensioni siano una costante in fase di compilazione o intendi qualcos'altro? –

+0

Qualcos'altro, il parametro inviato al pedice potrebbe essere qualsiasi cosa: https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Subscripts.html – gfpacheco

+1

Non penso che tu possa avere un pedice su una classe, solo su un'istanza di una classe. – JAL

risposta

6

Risposta breve no. Statico è limitato a metodi e proprietà all'interno di una struttura o classe. Gli abbonati sono operatori e non possono essere impostati su statici. Questo è fattibile:

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" 

ma bisogna fare un oggetto di threeTimesTable (in questo caso). Inoltre questa è la pena guardare:

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

+0

Questo è quello che ho scoperto anche io, accettato dal momento che hai scritto una bella risposta =] – gfpacheco

Problemi correlati