代码 Swift 化的挑战
今天的挑战题出自 Swift Users 邮件组的 Adriano Ferreira 。他的出发点是想要简化链式调用,但是很多情况下,想要使代码更 Swifter ,仅仅依靠看起来漂亮的链式语法是不够的。 func selectionSort(_ array: [Int]) -> [Int] { guard array.count > 1,let minElement = array.min() else { return array } let indexOfMinElement = array.index(of: minElement)! // All of this just to filter out the first smallest element and return the rest // Also tried ‘suffix(from:)' here,but couldn’t make it work properly let rest = array.enumerated() .filter({ index,_ in index != indexOfMinElement }) .map({ _,element in element }) return [minElement] + selectionSort(rest) } 如何使其更 Swifter首先,实用性。即使对于零个或一个元素的数组,我不认为添加代码去测试这些条件是实用的。我认为让代码直接顺序执行是更好的选择,即使这样对于只有一个元素的情况不是特别完美。 其次,连贯性。我不喜欢先找到最小值,然后再去找它的索引的想法。而枚举是允许将这两个操作串联起来的。 第三,风格。数组的遍历应该返回元组类型 我重新设计的代码在这里,请你也分享你的那一份吧!
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |