可选的可在Swift中使用

时间:2017-03-09 03:46:29

标签: swift optional

我们可以通过

比较两个可选变量
public func ==<T : Equatable>(lhs: T?, rhs: T?) -> Bool

但是当我比较String?String时,它会进入上面的相同功能。为什么不:

public func ==<T : Equatable>(lhs: T?, rhs: T) -> Bool

1 个答案:

答案 0 :(得分:-2)

通常,具有某些可选类型(Type?)的参数的函数并不意味着可选类型的变量作为输入的必要性。换句话说,采取一些函数foo,使

func foo(in: Type?) { ... } 

这实际意味着该函数接受nilType变量作为输入(解包时)。逻辑上这是nil || Type,因此当然可以将类Type?的变量作为输入,因为在展开时它是相同的nilType。但是,更进一步,Type(非可选)也可以正常工作,因为它满足逻辑表达式中的一个条件。