菜鸟教程小白 发表于 2022-12-11 22:15:01

ios - 使用闭包作为参数而不使用尾随闭包 Swift


                                            <p><p>使用尾随闭包语法时,<a href="https://stackoverflow.com/a/40467958/1800285" rel="noreferrer noopener nofollow">pass a function as a parameter of another function</a> 似乎很容易。 .</p>

<p>但是我想在不使用尾随闭包语法的情况下这样做</p>

<pre><code>func doSomethingTwo(closure: (String) -&gt; Void) {
    closure(&#34;AAA&#34;)
}

doSomethingTwo(closure: print(&#34;TEST&#34;) )
</code></pre>

<p>给予
无法将类型 '()' 的值转换为预期的参数类型 '(String) -> Void'</p>

<p>我知道</p>

<pre><code>doSomethingTwo{ (test: String) in
    print (&#34;\(test)&#34;)
}
</code></pre>

<p>有效,但希望没有尾随闭包语法。</p>

<p>这不是家庭作业问题,我正在查看教程并进行了研究,但没有给我这个问题的答案。 </p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>你需要定义自己的打印方法作为参数传递:</p>

<pre><code>func doSomethingTwo(closure: (String) -&gt; ()) {
    // when you call the closure you need to pass the string to be printed
    closure(&#34;TEST&#34;)
}
</code></pre>

<p>定义打印将传递给闭包的字符串的方法:</p>

<pre><code>let closure: (String) -&gt; () = { print($0) }
</code></pre>

<p>那么你可以随意调用它:</p>

<pre><code>doSomethingTwo(closure: closure)
</code></pre></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 使用闭包作为参数而不使用尾随闭包 Swift,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/54740478/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/54740478/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 使用闭包作为参数而不使用尾随闭包 Swift