func any<S: SequenceType where S.Generator.Element: BooleanType> (sequence: S) -> Bool{ var __g = sequence.generate() var first_element = __g.next() if first_element == nil{ return false } return reduce(sequence,first_element!,{func any<S: SequenceType where S.Generator.Element: BooleanType> (sequence: S) -> Bool{ return reduce(sequence,false,{|| })}'S.Generator.Element' is not convertible to 'Bool'|| })}
编辑:根据评论,这个功能应该看起来像这样
func any<S: SequenceType where S.Generator.Element: BooleanType> (sequence: S) -> Bool{ var __g = sequence.generate() var first_element = __g.next() if first_element == nil{ return false } return reduce(sequence,first_element!.boolValue,{func any<S: SequenceType where S.Generator.Element: BooleanType> (sequence: S) -> Bool{ for element in sequence { if element.boolValue { return true } } return false}|| })}
编译告诉我
在我看来,我明确告诉编译器它在第二行.我错过了什么?
你的问题是next返回一个可选项.这意味着reduce期望返回一个可选项,$0是可选项.您必须打开可选项才能使用|| *** 作符.你也不知道这个类型是Bool,只是它是一个BooleanType.您还必须通过调用boolValue将其转换为实际的Bool:但是,在这种情况下,我认为简洁是最好的:
这实际上也更有效,因为它一找到第一个就返回而不是总是通过整个事情.
总结以上是内存溢出为你收集整理的如何在Swift中编写任何(s:SequenceType)全部内容,希望文章能够帮你解决如何在Swift中编写任何(s:SequenceType)所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)