Swift单参数,自动关闭,完全不带大括号
我想用Apple Swift语言实现HaskellSwift单参数,自动关闭,完全不带大括号,swift,functional-programming,closures,Swift,Functional Programming,Closures,我想用Apple Swift语言实现Haskellelem函数 这看起来不是很难实现: func elem<T: Equatable>(item: T) -> [T] -> Bool { return { arr in find(arr, item) != nil } } elem(2)([1,2,3]) 这个错误是一个真正的问题,看起来像是编译器的缺陷。但是我们需要更深入地避免括号{},这可以通过@autoclosure实现: func elem<T:
elem
函数
这看起来不是很难实现:
func elem<T: Equatable>(item: T) -> [T] -> Bool {
return { arr in find(arr, item) != nil }
}
elem(2)([1,2,3])
这个错误是一个真正的问题,看起来像是编译器的缺陷。但是我们需要更深入地避免括号{}
,这可以通过@autoclosure
实现:
func elem<T: Equatable>(item: @autoclosure ()->T) -> (@autoclosure ()->[T]) -> Bool {
return { (arr: @autoclosure ()->[T]) in find(arr(), item()) != nil }
}
elem 2 [1,2,3]
func元素(项:@autoclosure()->T)->(@autoclosure()->[T])->Bool{
在find(arr(),item())中返回{(arr:@autoclosure()->[T])!=nil}
}
元素2[1,2,3]
我们也有同样的错误
我认为Swift编译器不应该给我这个错误。有没有其他方法可以避免大括号和方括号?我认为你不能随意删除大括号。不管你喜不喜欢,斯威夫特的语法要求大量的参数来强制应用。因此,这不是解决此类问题(语法更改建议)的合适论坛。你最好在苹果的Swift论坛上发布这个问题,并与Chris Lattner或SevenTenEleven联系
Consecutive statements on a line must be separated by ':'
func elem<T: Equatable>(item: @autoclosure ()->T) -> (@autoclosure ()->[T]) -> Bool {
return { (arr: @autoclosure ()->[T]) in find(arr(), item()) != nil }
}
elem 2 [1,2,3]