如何在swift中使用guard而不是if

Mad*_*tha 1 if-statement swift swift2 guard-statement

如何在swift中使用'guard'.我已经阅读了很多关于'guard'的文章.但是我没有清楚地了解这个.请给我一个明确的想法.请给我一些关于'if'语句的示例输出.

if firstName != "" 
{
   if lastName != "" 
   {
      if address != "" 
      {
        // do great code
      }
   }
 }
Run Code Online (Sandbox Code Playgroud)

Een*_*dje 5

如果不满足一个或多个条件,则使用保护语句将程序控制转移到范围之外.

func doSomething(data: String?) -> String {

    // If data is nil, then return
    guard let data = data else { return "Invalid data" }

    defer { print("This will always be printed if data isn't nil") }

    // data is now a non optional String
    if data.lowercaseString == "ok" { return "Data is \"ok\"" }

    return "I'm your father"
}

print(doSomething("ok"))
Run Code Online (Sandbox Code Playgroud)

输出:

This will always be returned if data isn't nil
Data is "ok"
Run Code Online (Sandbox Code Playgroud)

更多的是你的问题:

guard语句中任何条件的值必须具有符合BooleanType协议的类型.

func doSomething(data: String) -> String {

    guard !data.isEmpty else { return "Data is empty" }

    return data
}

print(doSomething("ok")) // ok
print(doSomething(""))   // Data is empty
Run Code Online (Sandbox Code Playgroud)