我们可以通过
比较两个可选变量public func ==<T : Equatable>(lhs: T?, rhs: T?) -> Bool
但是当我比较String?
和String
时,它会进入上面的相同功能。为什么不:
public func ==<T : Equatable>(lhs: T?, rhs: T) -> Bool
答案 0 :(得分:-2)
通常,具有某些可选类型(Type?
)的参数的函数并不意味着可选类型的变量作为输入的必要性。换句话说,采取一些函数foo
,使
func foo(in: Type?) { ... }
这实际意味着该函数接受nil
和Type
变量作为输入(解包时)。逻辑上这是nil || Type
,因此当然可以将类Type?
的变量作为输入,因为在展开时它是相同的nil
或Type
。但是,更进一步,Type
(非可选)也可以正常工作,因为它满足逻辑表达式中的一个条件。