Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 为什么要用T!而不是T作为函数参数和返回类型?_Swift_Javascriptcore - Fatal编程技术网

Swift 为什么要用T!而不是T作为函数参数和返回类型?

Swift 为什么要用T!而不是T作为函数参数和返回类型?,swift,javascriptcore,Swift,Javascriptcore,在JavaScriptCore中,我看到大多数函数声明为T!作为参数类型和返回类型。自从T!传入和返回时假定为非nil,为什么不将T声明为type呢 e、 g 为什么不 func evaluateScript(_ script: String) -> JSValue 这表示尚未对ObjC API的可空性进行审核,并且未应用可空性注释。如果没有nullability注释,编译器不知道这些值是否是可选的。这种情况下的默认行为是使它们都类型,并将问题留给调用者(唯一其他可能的方法是将所有内容?

在JavaScriptCore中,我看到大多数函数声明为T!作为参数类型和返回类型。自从T!传入和返回时假定为非nil,为什么不将T声明为type呢

e、 g

为什么不

func evaluateScript(_ script: String) -> JSValue

这表示尚未对ObjC API的可空性进行审核,并且未应用可空性注释。如果没有nullability注释,编译器不知道这些值是否是可选的。这种情况下的默认行为是使它们都
类型,并将问题留给调用者(唯一其他可能的方法是将所有内容
类型化,这将极不方便处理)

当Apple对标题进行注释时,
将消失

同时,在直接使用之前,您需要检查文档以确保返回值不能为零

在这种特殊情况下,底层的
JSEvaluateScript
实际上可以返回nil:

@result The JSValue that results from evaluating script, or NULL if an exception is thrown.

所以你需要检查一下。编译器目前无法知道这一点。

可能有点过时了。但请看可能的原因。
@result The JSValue that results from evaluating script, or NULL if an exception is thrown.