如果任务仅是解包值,我不理解创建无用常量的概念:
guard let foo = foo else { return }
对比
guard foo != nil else { return }
这些语句有什么区别?为什么不使用后者?
以下是使用 guard let 的示例:
var array: [String] = ["pineapple", "potato", "corn"]
guard let lastElement = array.last, lastElement == "corn" else { return false }
而且不使用 let:
guard array.last == "corn" else { return false }
我能不能选择第二种方法,因为它更简洁、简单,而且可能更节省内存?
array
被定义为[String]
,所以它不能是nil
,如果是的话,array.last
将会失败而不是array?.last
。最好还是回到原来的问题。 - jnpdxarray != nil
???last
是可选的,但是您的array
不是。 - Leo Dabusguard foo != nil else { return }
在你不想使用foo
的值,但工作流程的修改仍然依赖于其状态被设置的情况下非常有用。 - MadProgrammer