Swift中的一个方法可以有多少个参数?为什么?

问题描述:

我对可以在Swift方法中设置的参数的最大数量感兴趣,以及它如何受限?我阅读了关于如何在Java和C#中完成的信息,并希望知道它是如何在Swift中完成的。Swift中的一个方法可以有多少个参数?为什么?

+2

Swift是开源的,所以如果你对此深感兴趣,你可以研究源代码...... – matt

+0

我不确定是否有正确的答案,因为它可能是(对于iOS来说)内存受限。默认情况下,Swift参数是通过值传递和只读的,但是你也可以使用* inout *而不是*完全*通过引用(它仍然复制内存中的东西),它从根本上改变了你的问题的答案。最后,你认为数组,类型和元组是什么?所以我想我会说你需要进一步定义你的问题,然后才能给出准确的答案...... – dfd

+0

@matt我知道,但我问这是因为可能有人调查这一点,并可以分享他们的经验。 –

为什么你认为参数的数量有任意限制? Swift语言参考没有定义特定的限制。如果你看一下grammar,参数子句递归定义为:

parameter-clause → (­)­ | (­parameter-list­)­ 
parameter-list → parameter­ | parameter­,­parameter-list 

这有可能是有一些编译器实现细节限制此为有限长度(内存耗尽之前,这当然会限制它在练习),但我不知道一个,并不清楚为什么会有人预期。你当然不能依靠它。

看着AST,我没有看到任何证据显示这个级别的任意限制。正如你所期望的那样,它看起来是一个动态分配的列表。