İsteğe bağlı bağlamayı desteklemek için Swift (Int, Float ...) değer türlerinin nasıl uygulandığını merak ediyorum ("?"). Bu değer türlerinin yığında değil, yığında ayrıldığını varsayalım. Yani, boş olabileceği yığına bir tür göstericiye mi güveniyorlar yoksa temel yapı bir boole bayrağı içeriyor mu?Swift'de isteğe bağlı değerler nasıl uygulanır?
cevap
İsteğe bağlı özellikler, Swift'de enum
türü olarak uygulanır.
Bu yapıldığında nasıl bir örnek için Apple's Swift Tour bakınız: aşağıda gösterildiği gibi
enum OptionalValue<T> {
case None
case Some(T)
}
Ayrıca, 'ImplicitlyUnwrappedOptional' adlı başka bir türü vardır. – Sulthan
ve sonra sanırım soru olurdu ... enums nasıl uygulandı? :) – newacct
* Etiketli sendikaların * kullanıldığı her bir değerin kendisiyle ilişkili bir etiketin olduğu anlamına gelir. Başka nasıl saklayabilirsin? – wcochran
Opsiyoneller uygulanmaktadır. Bunu bulmak için, CMD-Click var x: Optional<Int>
gibi bir bildirimde. var x: Int?
bunun için sadece sözdizimsel şekerdir.
enum Optional<T> : LogicValue, Reflectable {
case None
case Some(T)
init()
init(_ some: T)
/// Allow use in a Boolean context.
func getLogicValue() -> Bool
/// Haskell's fmap, which was mis-named
func map<U>(f: (T) -> U) -> U?
func getMirror() -> Mirror
}
Swift, dünden beri açık kaynak. Sen GitHub üzerinde uygulanmasını görebilirsiniz: cevapların çoğu
public enum Optional<Wrapped> : ExpressibleByNilLiteral {
case none
case some(Wrapped)
public init(_ some: Wrapped) { self = .some(some) }
public init(nilLiteral:()) {
self = .none
}
public var unsafelyUnwrapped: Wrapped {
get {
if let x = self {
return x
}
_debugPreconditionFailure("unsafelyUnwrapped of nil optional")
}
}
}
https://github.com/apple/swift/blob/master/stdlib/public/core/Optional.swift basitçe Swift opsiyoneller is enum
ler nasıl uygulandığını daha sonra soruları yalvarır enum
s ile uygulanmaktadır söylüyorlar. ile etiketlenmiş birleşik C numaralı etiket kullanılmalıdır. Örneğin, Swift enum için
enum Foo {
case None
case Name(String)
case Price(Double)
}
şöyle
C mimick'ed olabilir:
enum {FOO_NONE_, FOO_NAME_, FOO_PRICE_};
typedef struct {
int flavor; // FOO_NONE_, FOO_NAME_ or FOO_PRICE_
union {
char *Name; // payload for FOO_STRING_
double Price; // payload for FOO_DOUBLE_
} u;
}
- 1. Çift isteğe bağlı nasıl açılır?
- 2. Verilen isteğe bağlı koleksiyon
- 3. Linq isteğe bağlı parametreler
- 4. İsteğe bağlı özellik
- 5. İsteğe bağlı (nil)
- 6. Hızlı isteğe bağlı bağlantıya sahip isteğe bağlı birleştirme hala
- 7. Swift 2.2 isteğe bağlı/isteğe bağlı istekleri keser
- 8. Salatalıkta isteğe bağlı parametre
- 9. Raylar, isteğe bağlı parametreler
- 10. Ninj. İsteğe Bağlı Enjeksiyon
- 11. İsteğe Bağlı PORTlar?
- 12. Swift: İsteğe bağlı değişken
- 13. Regex isteğe bağlı tırnak
- 14. isteğe bağlı parametreler proc?
- 15. Perl6 isteğe bağlı işlev bayrakları
- 16. Regexp pattern İsteğe bağlı karakter
- 17. MATLAB işlevlerinde isteğe bağlı hatalar
- 18. NoUIslider - İsteğe bağlı güncelleştirme aralığı
- 19. TimeSpan BiçimString İsteğe bağlı saatlerde
- 20. initializer_list ile isteğe bağlı yapıcı
- 21. İsteğe bağlı [Zorunlu] karmaşık türlerde
- 22. Makroya isteğe bağlı değişken ekleme
- 23. RestKit RKObjectMapping Swift İsteğe Bağlı
- 24. C# bu parametreler isteğe bağlı
- 25. Scala'da isteğe bağlı xml öznitelikleri işleniyor
- 26. İsteğe bağlı olarak nasıl göz atılır?
- 27. İsteğe bağlı eşanlamlılık Swift'de nasıl çalışır?
- 28. İsteğe bağlı argümanlar defprotocol'da nasıl kullanılır?
- 29. Django'nun DateTimeField'ı isteğe bağlı nasıl oluşturulur?
- 30. Log4net.dll'yi isteğe bağlı olarak nasıl yapabilirim?
Bonus: Verilen bir Swift tohum için böyle bir cevap bulabilirsiniz how ve: kim bilinenler cevap (sadece gelecekte değişiklik olması durumunda) –
olası kopyası [Swift dilinde bir ünlem işareti nedir?] (http://stackoverflow.com/questions/24018327/what-does-an-exclamation-mark- ortalama-in-the-hızlı-dil) – Sulthan