在本文中,我们将为您详细介绍如何使用Swift@autoclosure的相关知识,并且为您解答关于如何使用抗原检测试剂盒的疑问,此外,我们还会提供一些关于6.5Swift中的闭包(Closure)详解
在本文中,我们将为您详细介绍如何使用Swift @autoclosure的相关知识,并且为您解答关于如何使用抗原检测试剂盒的疑问,此外,我们还会提供一些关于6.5 Swift中的闭包(Closure)详解 [Swift原创教程]、ios – Firebase 3.6.0(Auth) – 使用Swift 3.0检测特定错误、ios – Swari 1.2中的Variadic @ autoclosure?、ios – Swift Closure为什么调用函数返回错误?的有用信息。
本文目录一览:- 如何使用Swift @autoclosure(如何使用抗原检测试剂盒)
- 6.5 Swift中的闭包(Closure)详解 [Swift原创教程]
- ios – Firebase 3.6.0(Auth) – 使用Swift 3.0检测特定错误
- ios – Swari 1.2中的Variadic @ autoclosure?
- ios – Swift Closure为什么调用函数返回错误?
如何使用Swift @autoclosure(如何使用抗原检测试剂盒)
assert
在Swift中编写时,我注意到第一个值键入为
@autoclosure() -> Bool
使用重载的方法返回通用T
值,并通过进行测试LogicValue
protocol
。
但是严格遵守眼前的问题。似乎要@autoclosure
返回一个Bool
。
编写不带任何参数并返回Bool的实际闭包是行不通的,它要我调用闭包使其进行编译,如下所示:
assert({() -> Bool in return false}(), "No user has been set", file: __FILE__, line: __LINE__)
但是,仅通过Bool即可:
assert(false, "No user has been set", file: __FILE__, line: __LINE__)
那么发生了什么?什么@autoclosure
啊
编辑: @auto_closure
已重命名@autoclosure
答案1
小编典典考虑一个带有一个参数的函数,一个不带参数的简单闭包:
func f(pred: () -> Bool) { if pred() { print("It''s true") }}
要调用此函数,我们必须传递一个闭包
f(pred: {2 > 1})// "It''s true"
如果我们省略花括号,我们将传递一个表达式,这是一个错误:
f(pred: 2 > 1)// error: ''>'' produces ''Bool'', not the expected contextual result type ''() -> Bool''
@autoclosure
在表达式周围创建一个自动关闭。因此,当调用者编写类似的表达式时2 > 1
,它会自动包装到一个闭包中,以{2 >1}
在传递给之前变为f
。因此,如果我们将其应用于函数f
:
func f(pred: @autoclosure () -> Bool) { if pred() { print("It''s true") }}f(pred: 2 > 1)// It''s true
因此,它仅适用于表达式,而无需将其包装在闭包中。
6.5 Swift中的闭包(Closure)详解 [Swift原创教程]
原文:http://coolketang.com/staticCoding/5a99261ed50eee2ea303773d.html
1. 本节课将为你演示闭包的使用,闭包功能使编码更加简洁,符合开发语言的现代、简便明了的特点。
2. 首先定义一个函数类型的变量,它拥有两个整型参数,并返回一个整型的结果。等号下方的大括号,是用来实用一个函数功能的代码块。
3. 然后在大括号内,输入两行代码。前一行代码,用来声明函数代码块的参数和返回值信息,然后将对参数的操作,放置在in的下方。
4. 通过该函数类型的变量,即可调用函数的功能:用来获得两个参数的和。
5. 这里创建了一个函数,它同样可以实现和上方代码相同的功能。
6. 调用的方式也是一样的。
7. 在使用闭包来声明一个函数类型的变量时,可以省略对变量类型的定义,系统会自动推断出它的类型。
8. 接着使用相同的代码,实现函数的功能即可。
9. 其实我们还有更加简单的方式,在等号的右侧,通过一个省略了参数声明的闭包语句,给变量赋予了返回两个参数之和的函数功能。
10. 使用该函数变量,计算两个参数的和。
11. 这种函数变量的声明方式,仍然可以进行简化,使用$0和$1表示第一个参数和第二个参数,并且省略了return操作符。
12. 使用该函数变量,计算两个参数的和。
13. 闭包语句随处可见,例如通过系统提供的排序方法sorted,对一个数组进行排序,在此通过小于号,采用升序排列的方式。点击显示结果图标,显示结果列表。
14. 排序方法共进行了4次操作,点击显示结果图标,隐藏结果列表。
15. 继续代码的编写。
16. 输出排序后的数组,从右侧可以看出使用闭包排序后的效果。
17. 闭包语句经常和方法声明配合使用,但是闭包语句通常放在最后一个参数的位置。在此添加一个方法,该方法拥有一个函数类型的参数,最后返回由该函数参数执行后的结果。
18. 然后使用闭包语句,使用第三个参数的函数功能。
19. 这样就可以将其它的函数,作为该函数的参数进行调用。
20. 同样可以采用更加简便的方式,完成相同的功能。在此只使用一个加号,代替求和闭包。观察右侧输出的结果,和上面的结果是一致的。
21. 你甚至可以将加号,修改为乘号。
22. 无论加号、乘号,还是其它运算符号,其实都是对本行语句中的闭包语句的一种省略的写法。点击显示结果图标,查看本行代码执行的结果,并结束对闭包功能的讨论。
23.
ios – Firebase 3.6.0(Auth) – 使用Swift 3.0检测特定错误
在Parse中,我会检查error.code是否等于某个数字,不确定它是否与Firebase相同或类似.
解决方法
if let errCode = FIRAuthErrorCode(rawValue: err!._code) { switch errCode { case .errorCodeInvalidEmail: print("invalid email") case .errorCodeEmailAlreadyInUse: print("in use") default: print("Other error!") } }
其中err是来自firebase的错误
ios – Swari 1.2中的Variadic @ autoclosure?
之前:
public func coalesce<T>(all : @autoclosure () -> T? ...) -> T? { for f : () -> T? in all { if let x = f() { return x } } return nil }
之后:???
解决方法
This issue behaves as intended based on the following:
@autoclosure is only allowed on parameters of function type,and varargs is an array. This is not expected to work.
ios – Swift Closure为什么调用函数返回错误?
func printerFunction() -> (Int) -> () { var runningTotal = 0 func printInteger(number: Int) { runningTotal += 10 println("The running total is: \(runningTotal)") } return printInteger }
为什么调用func本身有错误,但是当我将func分配给常量时没有错误? printAndReturnIntegerFunc(2)将2 Int作为参数传递给返回值?
printerFunction(2) // error let printAndReturnIntegerFunc = printerFunction() printAndReturnIntegerFunc(2) // no error. where is this 2 going??
解决方法
func printerFunction(abc: Int) -> (Int) -> (){ }
这将工作正常:
printerFunction(2)
之后,您将该函数的引用提供给另一个变量,如下所示:
let printAndReturnIntegerFunc = printerFunction()
这意味着printAndReturnIntegerFunc的类型是这样的:
这意味着它接受一个Int,它将返回void,所以这将工作:
printAndReturnIntegerFunc(2)
今天关于如何使用Swift @autoclosure和如何使用抗原检测试剂盒的介绍到此结束,谢谢您的阅读,有关6.5 Swift中的闭包(Closure)详解 [Swift原创教程]、ios – Firebase 3.6.0(Auth) – 使用Swift 3.0检测特定错误、ios – Swari 1.2中的Variadic @ autoclosure?、ios – Swift Closure为什么调用函数返回错误?等更多相关知识的信息可以在本站进行查询。
本文标签: