Swift中的共同递归,没有前向函数声明

时间:2017-05-26 23:46:35

标签: swift recursion forward-declaration

Swift没有转发函数声明的机制(据我所知),所以我想知道如何定义简单的共同递归函数。例如,绘制Dragon Curve的简单方案可以使用以下共同递归函数file_field(:post, :image, accept: 'image/png,image/gif,image/jpeg') X

Y

我想我可以使用协议以某种方式取消它。但是,如果没有前向声明或Swift中不完整的类型,你如何解决这个鸡蛋问题?

编辑:上面的代码没问题,但是如果您移动底部调用func dragon(levels : Int) { func X(_ d : Int) { // call's Y() if d > 0 { X(d - 1) turn(90) Y(d - 1) drawForward() turn(90) } } func Y(_ d : Int) { // calls X() if d > 0 { turn(-90) drawForward() X(d - 1) turn(-90) Y(d - 1) } } drawForward() // put these two statements above the definition X(levels) // of 'X' and you get "use of 'X' before definition } // error." ,那么 它发生在X(levels)的定义之前,你得到错误“使用 声明之前的局部变量'X'。这看起来很奇怪 因为您定义的是Xdragon实际上并不存在 直到稍后调用(实际调用X(levels)时)。

0 个答案:

没有答案