首页 文章

为什么swift不允许嵌套if语句和其他语句?

提问于
浏览
-5

因此,在过去一小时左右的时间里,我一直试图在swift中嵌套三个if语句,但没有任何工作 . 我真的把头发拉出来看似乎那么简单,但我不知道我做错了什么 . 任何帮助表示赞赏 .

var population = 125442
var message: String
var hasAPostOffice: Bool = true

if population < 10000 {
    message = "\(population) is a pretty small town"
}else if population >= 10000 && population < 50000 {
        message = "\(population) is a medium sized town"
}else{
        message = "\(population) is a very large town!"
}else = {
    population >= 200000 && population < 120000 {
        message = "\(population) is a super huge town"
}
}
print(message)

if !hasAPostOffice {
    print("Where could I buy stamps?")
}

4 回答

  • 2

    您的嵌套应该看起来像 -

    if population < 10000 {
        message = "\(population) is a pretty small town"
    }else if population >= 10000 && population < 50000 {
        message = "\(population) is a medium sized town"
    }else if(// some condition here){
        message = "\(population) is a very large town!"
    }else {
    
    }
    

    再加上这个条件是什么

    population >= 200000 && population < 120000 {
    

    在我看来,这绝不是真的,因为人口不能同时低于120000和超过200000 .

    所以在这里检查你的逻辑

  • 0

    您遇到的问题不仅限于Swift . 其他每个语句必须只与一个if语句相关联 .

    在您的代码中,您有两个else语句 . 如果因为尝试获得评估的尝试条件,则其他一个语句看起来应该是其他语句 . 因此,如果您具有依赖于表达式的条件,请从中创建else if语句 .

    if population < 10000 {
      message = "\(population) is a pretty small town"
    }
    else if population >= 10000 && population < 50000 {
      message = "\(population) is a medium sized town"
    }
    else if population >= 200000 && population < 120000{
     message = "\(population) is a super huge town"
    }
    else{
        message = "\(population) is a very large town!"
    }
    
  • 0

    看起来你的逻辑是关闭的;解决方案是将最终的else添加为最大值:

    if population < 10000 {
        message = "\(population) is a pretty small town"
    } else if population >= 10000 && population < 50000 {
        message = "\(population) is a medium sized town"
    } else if population >= 50000 && population < 120000 {
        message = "\(population) is a very large town"
    } else if population >= 120000 && population < 200000 {
        message = "\(population) is a super huge town"
    } else {
        message = "\(population) is enormous!"
    }
    
  • 0

    这对switch语句更有效:

    let population = 125442
    let hasAPostOffice = true
    
    let message: String
    switch population {
        case 0 ..< 10_000: message = "\(population) is a pretty small town"
        case 10_000 ..< 50_000: message = "\(population) is a medium sized town"
        case 120_001 ... 200_000: message = "\(population) is a super huge town"
        default: message = "\(population) is a very large town!"
    }
    
    print(message)
    
    if !hasAPostOffice {
        print("Where could I buy stamps?")
    }
    

相关问题