Function Swift:用另一个函数调用不纯函数

Function Swift:用另一个函数调用不纯函数,function,swift,functional-programming,nested,closures,Function,Swift,Functional Programming,Nested,Closures,我试图使用助手函数在同一上下文中调用输入上下文敏感函数。在名为“drawGrid()”的类函数的上下文中,我有以下代码和图中所示的drawGrid()的结束括号。我用“drawQ1Line()”调用输入不纯的“drawLine()”。我在定义drawLine()的上下文中调用'drawQ1Line()。也许即使这是合乎逻辑的,也不是Swift语言推断出来的,我需要知道如何正确处理嵌套调用 我查找了我收到的具体错误,并找到了一些关于使用闭包的建议。据我所知,闭包本质上是带状态的函数,但是,我不确定

我试图使用助手函数在同一上下文中调用输入上下文敏感函数。在名为“drawGrid()”的类函数的上下文中,我有以下代码和图中所示的drawGrid()的结束括号。我用“drawQ1Line()”调用输入不纯的“drawLine()”。我在定义drawLine()的上下文中调用'drawQ1Line()。也许即使这是合乎逻辑的,也不是Swift语言推断出来的,我需要知道如何正确处理嵌套调用

我查找了我收到的具体错误,并找到了一些关于使用闭包的建议。据我所知,闭包本质上是带状态的函数,但是,我不确定输入/输出纯度的限制是否相同,或者它在类级别上的关系如何。然而,这似乎不是我问题的解决方案,因为我不一定对保持状态感兴趣,而只是简单地使用一个helper函数调用另一个。事实上,我很好奇“shape”和“pathToDraw”是否可以按当前的状态正常调用,而不是以状态存储在闭包中,即使这可以修复我当前的错误。如果我遇到需要调用一个函数来代替依赖于输入、值更改或有输出杂质的SKShapeNode()的情况,该怎么办?那么仅仅保存该值是行不通的


Swift是一种愚蠢的语言:-(在内部
func
参数中使用唯一的名称。如

func drawQ1Line(heightA:CGFLoat, xA:CGFloat, x2A:CGFloat....
  drawLine(xA, hegihtA- ...
我在操场上尝试了以下代码:

class A {
  func a(a:Int) {
    println(a)
  }
  func b(b:Int) {
    a(b)
  }
}
let a=A()
a.b(1)


抛出一个编译器错误

Swift不是(尚未)Pascal或Modula-嵌套函数未完全实现。可以有一个引用“超级”函数作用域变量的嵌套函数,但不能有其他“姐妹”函数。除了“很难实现”之外,我真的不明白为什么.这似乎与斯威夫特的目标不一致……不过,否决投票并不能改变斯威夫特是一种愚蠢语言的事实。你不能称之为“姐妹”函数。你的答案是错误的。我并不反对应该可以调用姐妹函数。@Grimxn好吧,我在操场上试过了,它成功了。姐妹函数被调用了。抱歉。你的扩展答案是正确的-姐妹函数可以被调用,但前提是它们不引用共享作用域变量。这只是我之所以这么做的原因之一称Swift为愚蠢的语言。30年前,在编译器构造中,我们开发了更好的语言构造。尽管它比Obj-C更好(我不会错过它),但它的概念似乎忽略了自那以后开发的几乎任何东西,从而引入了新的愚蠢概念。
class A {
  func a(a:Int) {
    println(a)
  }
  func b(a:Int) {
    a(a)
  }
}