像许多人一样,我正在学习Apple提供的新Swift语言,通过教程我遇到了一个创建通用堆栈的示例。下面是从例如弹出功能......简单堆栈示例,如果堆栈为空,如何返回?
mutating func pop() -> T {
return elements.removeLast()
}
我决定延长该实现当元素数组为空,但作为新的斯威夫特我不能确定什么返回如果堆栈为空时不会弹出。
mutating func pop() -> T {
if !elements.isEmpty {
return elements.removeLast()
} else {
// return nothing?
}
我的问题是什么是斯威夫特
我认为removeLast会给你'nil'如果堆栈是空的,这正是你应该返回什么时,堆栈是空的,所以没有必要的if-else语句。 –
@LordZsolt:实际上,当数组为空时,我认为使用'removeLast'是一个运行时错误。在Swift中,一个类型(''在这种情况下)不能被设置为'nil'。只有输入“可选T”('T?')才能包含'nil'。如果编译代码,'removeLast'必须返回'T'而不是'T?',因为'T''不能以这种方式隐式转换为'T'。 –
@AlvinThompson对不起,没有花足够的时间与斯威夫特...我有考试... –