关闭和一等功能之间的差异?
在
Swift文档中,Apple表示:
我以为是First-class functions的定义 他们也说:
我认为这是封闭的定义,而另一个定义是一流的功能,但苹果似乎把它们放在一起,称之为关闭. 我有误解吗?或者是苹果关闭和一级功能关闭? 我写了这个示例代码,只想知道我是否正确的书面评论? // 'a' takes a first class function,which makes 'a' a higher order function func a(ch: () -> Void){ print("Something") ch() // 'ch' is a first class function print("Ended") } func closureFunc(){ var num = 2 a({ // access to 'num' is possible by closures num = num*2 print(num) }) } closureFunc()
这些概念是正交的.他们不直接相关;它们是关于Swift功能的两个事实.
>功能是一流的.这意味着它们可以传递 – 分配为变量,作为参数传递给函数参数,并作为结果传递给函数. 这是一个例子(从游乐场): func multiplierMaker(i:Int) -> (Int) -> (Int) { func multiplier(ii:Int) -> (Int) { return ii*i } return multiplier } let g = multiplierMaker(10) g(2) // 20 想想功能乘数: >乘数可以作为函数乘数Maker的结果返回,并分配给g,并且它有一个定义良好的类型(Int) – > (Int),是因为函数是一流的. (请注意,这与匿名函数无关,所有答案或语句导致您认为闭包与匿名函数有关是错误的,本示例中没有匿名函数,匿名函数是一个闭包,但只是因为所有功能都是关闭.) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |