相关疑难解决方法(0)

如何使用Swift @autoclosure

我注意到assert在Swift中编写第一个值时输入为

@autoclosure() -> Bool
Run Code Online (Sandbox Code Playgroud)

用重载方法返回一个通用T值,通过它来测试存在LogicValue protocol.

但严格坚持手头的问题.它似乎想要一个@autoclosure返回一个Bool.

编写一个不带参数并返回Bool的实际闭包不起作用,它要我调用闭包使其编译,如下所示:

assert({() -> Bool in return false}(), "No user has been set", file: __FILE__, line: __LINE__)
Run Code Online (Sandbox Code Playgroud)

然而,简单地通过Bool工作:

assert(false, "No user has been set", file: __FILE__, line: __LINE__)
Run Code Online (Sandbox Code Playgroud)

那么发生了什么?什么是@autoclosure

编辑: @auto_closure已重命名@autoclosure

closures swift

143
推荐指数
3
解决办法
3万
查看次数

在Swift中创建一个"forCount"控件结构

在许多项目中,这种控制结构是可读性的理想选择:

forCount( 40 )
 {
 // this block is run 40 times
 }
Run Code Online (Sandbox Code Playgroud)

你可以 在objective-C中做到这一点.

鉴于Swift 对宏的方法与 objective-c的方法截然不同,

有没有办法forCount(40)在Swift项目中创建这样的控制结构?


Swift中的一些类似概念:

for _ in 1...40
 { // this block is run 40 times }
Run Code Online (Sandbox Code Playgroud)

使用Int巧妙扩展 ...

40.times
 { // this block is run 40 times }
Run Code Online (Sandbox Code Playgroud)

macros language-features preprocessor swift

8
推荐指数
1
解决办法
501
查看次数