为什么带有后卫语句的Swift函数无法正确编译?

我正在为这个测验问题而苦苦挣扎,因为该代码无法编译。有人可以帮我解决这个Swift测验问题吗?

struct Dog {
let name: String
let owner: String?
} 
let stray = "No known owner" 
func createDog(dict:[String:String]) -> Dog?{guard
let name = dict["name"] else{ 
return nil
}
let owner = dict["owner"]
return Dog(name: name, owner: owner)
}
let myDog = createDog(["name":"Indi"])

以下哪项最能描述myDog?

一种)。将创建myDog,但其值为nil。

B)。 myDog将具有“名称”,“ Indi”和“ null”(所有者)。

C)。 myDog将具有“名称”,“ Indi”和“所有者”,“ Stray”。

D)。不会创建myDog,因为代码将崩溃。

因为此代码在我的X代码中引发了很多错误,所以我选择了D,但担心我的答案是错误的,请另请谅解。谢谢

评论