菜鸟教程小白 发表于 2022-12-13 02:44:20

ios - Swift 4.0 中的空闭包


                                            <p><div>
            <aside class="s-notice s-notice__info post-notice js-post-notice mb16"role="status">
      <div class="d-flex fd-column fw-nowrap">
            <div class="d-flex fw-nowrap">
                <div class="flex--item wmn0 fl1 lh-lg">
                  <div class="flex--item fl1 lh-lg">
                        <b>这个问题在这里已经有了答案</b>:
                        
                  <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>注意 <code>Void</code> 只是一个空元组 <code>()</code>。</p>

<p>我认为这是由于 <a href="https://github.com/apple/swift-evolution/blob/master/proposals/0029-remove-implicit-tuple-splat.md" rel="noreferrer noopener nofollow">Remove implicit tuple splat behavior from function applications (SE-0029)</a> </p>

<p>基本上,此更改表明您不能再将元组作为参数传递。您过去可以通过在函数名称后面的 <code>()</code> 中插入内容来传递参数,或者传递表示参数的元组</p>

<pre><code>func foo(a: Int, b: Int) {}

let tuple = (a: 1, b: 2)
foo(tuple)
</code></pre>

<p>现在你不能。</p>

<p>如果我们将 <code>foo</code> 转换为 swift 4,它将如下所示:</p>

<pre><code>func foo(a; Int, b: Int) {}
func foo(_ x: (a: Int, b: Int)) {}
</code></pre>

<p>所以 <code>(Void) -> Void</code> 表示一个带有 <code>Void</code> 参数的函数。你以前什么都不能传递,因为 <code>Void</code> 只是一个空元组,在“splat”之后变成“无参数”。</p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - Swift 4.0 中的空闭包,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/46579278/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/46579278/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - Swift 4.0 中的空闭包