hızlı dava düşüyor


147

Swift'in beyanı düştü mü? örneğin aşağıdakileri yaparsam

var testVar = "hello"
var result = 0

switch(testVal)
{
case "one":
    result = 1
case "two":
    result = 1
default:
    result = 3
}

"bir" durumu ve "iki" durumu için aynı kodun çalıştırılması mümkün müdür?

Yanıtlar:


370

Evet. Bunu şu şekilde yapabilirsiniz:

var testVal = "hello"
var result = 0

switch testVal {
case "one", "two":
    result = 1
default:
    result = 3
}

Alternatif olarak, fallthroughanahtar kelimeyi de kullanabilirsiniz :

var testVal = "hello"
var result = 0

switch testVal {
case "one":
    fallthrough
case "two":
    result = 1
default:
    result = 3
}

31
Değil 1 sadece söz fallthroughama çoklu durum kullanmayı öneren
Thilo

3
Bu, C'nin düşme tehlikesi ile düşmemesi arasında çok iyi bir uzlaşmadır, örneğin, C #
Alexander - Reinstate Monica

Bir vakadan temerrüde düşmeyi bilen var mı? durum "iki", varsayılan: derlenmez.
Zack Morris

2
Boşver. Vakayı yorumlamanın onu varsayılan vakaların bir parçası yaptığını fark ettim, yani: / * case "iki", * / default: aradığım etkiye sahip.
Zack Morris

1
@AlexanderMomchliov C # açık bir düşüş yaşadı
Ian Newson

8
var testVar = "hello"

switch(testVar) {

case "hello":

    println("hello match number 1")

    fallthrough

case "two":

    println("two in not hello however the above fallthrough automatically always picks the     case following whether there is a match or not! To me this is wrong")

default:

    println("Default")
}

Varsayılan duruma geçmenin bir yolunu biliyor musunuz?
MarcJames

5
"ikinci durum" a katılıyorum. Benim için bu davranış berbat. Swift neden doğru olmasa bile sonraki vakayı icra ediyor? Bu, anahtar ifadesini tamamen işe yaramaz hale getiriyor ...
Andreas Utzinger

7
case "one", "two":
    result = 1

Break ifadesi yoktur, ancak vakalar çok daha esnektir.

Ek: Analog Dosyanın işaret ettiği gibi, aslında breakSwift'de ifadeler var . switchBoş vakalara izin verilmediğinden, aksi takdirde boş bir vakayı doldurmanız gerekmedikçe, ifadelerde gereksiz olsalar da döngülerde kullanılabilirler . Örneğin: default: break.


6

İşte size anlaşılması kolay bir örnek:

let value = 0

switch value
{
case 0:
    print(0) // print 0
    fallthrough
case 1:
    print(1) // print 1
case 2:
    print(2) // Doesn't print
default:
    print("default")
}

Sonuç: fallthroughBir önceki fallthroughdurum eşleştiğinde veya eşleşmediğinde sonraki durumu (yalnızca bir) yürütmek için kullanın .


2

fallthroughBir vakanın sonundaki anahtar kelime , aradığınız düşme davranışına neden olur ve tek bir durumda birden çok değer kontrol edilebilir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.