Swift可选模板键入意外参数行为

时间:2017-08-13 14:50:00

标签: ios swift swift3

我有一个转换器类,其中T可以是一个可选类型。

class Converter<T>
{
    init(){}

    func convertVal(_ val: T) -> T
    {
        print("val: \(val)")
        print(type(of: val))
        print("val is nil:  \(val == nil)")
        return val
    }
}

let firstStr: String? = nil

let converter = Converter<String?>()



var str = converter.convertVal(firstStr)

当我试图转换零值时:

打印:

val: nil
Optional<String>
val is nil:  false

为什么打印nil且条件val == nilfalse

1 个答案:

答案 0 :(得分:2)

我认为您要做的是使year date category1 category2 client函数的参数和返回类型为可选,convertVal的类型为常规Converter

String

输出:

class Converter<T> {
    init() {}

    func convertVal(_ val: T?) -> T? {
        print("val: \(val)")
        print(type(of: val))
        print("val is nil: \(val == nil)")
        return val
    }
}

let firstStr: String? = nil

let converter = Converter<String>()
var str = converter.convertVal(firstStr)