2016-02-24 16 views
5

Başlık, hemen hemen bir soru açıklıyor: MyStruct[123] bir işlevi çağırmak gerekmeden (MyStruct.doSomething(123)) veya bir örnek oluşturmak (MyStruct()[123]). Derslere veya yapılara sahip olmak iyi olurdu.Swift'de sabit bir abonelik yapabilir miyim?

+0

: Ayrıca bu bakarak değer. Boyutu derleme zamanı sabiti olan bir dizi mi yoksa başka bir şey mi demek istiyorsunuz? –

+0

Başka bir şey, alt dizine gönderilen parametre bir şey olabilir: https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Subscripts.html – gfpacheco

+1

Bir altyazı olabileceğini sanmıyorum Bir sınıfta, sadece bir sınıfın örneğinde. – JAL

cevap

6

Kısa cevap yok. Statik, bir yapı veya sınıf içindeki yöntemler ve özellikler ile sınırlıdır. Aboneler operatörlerdir ve statik olarak ayarlanamaz. Bu yapılabilir:

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" 

ancak (bu durumda) threeTimesTable bir nesne yapmak zorunda. Başlık belirsizdir

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

+0

Ben de iyi bir cevap yazdığınızdan beri kabul ettim. – gfpacheco

İlgili konular