我有一个名为“todoItems”的字符串数组.我想获得这个数组中最长的字符串.在这种情况下处理初始零值的最佳做法是什么?我想这可能经常发生.我想过编写一个自定义函数并使用它.
func optionalMax(maxSofar: Int?,newElement: Int) -> Int { if let definiteMaxSofar = maxSofar { return max(definiteMaxSofar,newElement) } return newElement} // Just testing - nums is an array of Ints. Works.var maxValueOfInts = nums.reduce(0) { optionalMax(解决方法 可能只是Swift不会自动推断出初始值的类型.尝试通过明确声明来明确它:var longestOfStrings = todoItems.reduce(nil as Int?) { optionalMax(,) } // ERROR: cannot invoke 'reduce' with an argument List of type ‘(nil,(_,_)->_)'var longestOfStrings = todoItems.reduce(nil) { optionalMax(count(),count()) }var longestOfStrings = todoItems.reduce(nil as Int?) { a,x in optionalMax(a,count(x)) },count()) }
顺便说一下,我不指望$0(你的累加器),因为它不是一个字符串而是一个可选的Int Int?
通常为了避免以后读取代码的混淆,我明确地将累加器标记为a,并将来自serIE的元素标记为x:
当使用累加器或单个元素时,这种方式应该比代码中的$0和$1更清晰.
希望这可以帮助
总结以上是内存溢出为你收集整理的swift – 如何处理reduce函数的初始nil值全部内容,希望文章能够帮你解决swift – 如何处理reduce函数的初始nil值所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)