SORU
6 HAZİRAN 2014, Cuma


Salt okunur olmayan bilgisayarlı Swift değişken özellikleri

Yeni Apple Swift dili ile bir şeyler anlamaya çalışıyorum. Hadi Objective-C readonly özellikleri var aşağıdaki gibi bir şey yaptım ki, ve tek tek değiştirilemez. Ancak, belirli bir yöntem kullanarak, özelliklerini mantıklı bir şekilde değişti.

Aşağıdaki örnek alıyorum, çok basit bir saat. Objective-C bunu yazmak istiyorum

@interface Clock : NSObject

@property (readonly) NSUInteger hours;
@property (readonly) NSUInteger minutes;
@property (readonly) NSUInteger seconds;

- (void)incrementSeconds;

@end

@implementation Clock

- (void)incrementSeconds {
     _seconds  ;

     if (_seconds == 60) {
        _seconds = 0;
        _minutes  ;

         if (_minutes == 60) {
            _minutes = 0;
            _hours  ;
        }
    }
}

@end

Belirli bir amaç için, saniye, dakika ve saat doğrudan temas edemez, sadece ikinci bir yöntemi kullanarak ikinci bir artış sağladı. Sadece bu yöntem örnek değişkenleri hile kullanarak bu değerleri değiştirebilir.

Swift diye bir şey olmadığına göre, bir eşdeğer bulmak için çalışıyorum. Eğer bunu yaparsam:

class Clock : NSObject {

    var hours:   UInt = 0
    var minutes: UInt = 0
    var seconds: UInt = 0

    func incrementSeconds() {

        self.seconds  

        if self.seconds == 60 {

            self.seconds = 0
            self.minutes  

            if self.minutes == 60 {

                self.minutes = 0
                self.hours  
            }
        }
    }
}

Bu işe yarardı, ama herkes doğruca özelliklerini değiştirebilir.

Belki de ben zaten Objective-C kötü bir tasarım vardı ve bu potansiyel yeni Swift eşdeğer mantıklı değil. Ve eğer başka bir şey varsa, çok minnettar olacağım;) olsaydı

Belki gelecekErişim Kontrol MekanizmalarıApple tarafından söz verilen cevap mı?

Teşekkürler!

CEVAP
30 EYLÜL 2014, Salı


Sadece private(set) ile özellik bildirimi gibi önek:

private(set) var hours:   UInt = 0
private(set) var minutes: UInt = 0
private(set) var seconds: UInt = 0

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • kylelandry

    kylelandry

    9 AĞUSTOS 2007
  • MysteryGuitarMan

    MysteryGuita

    16 HAZİRAN 2006
  • Rockstar Games

    Rockstar Gam

    17 ŞUBAT 2006