如何在 Swift 中通过属性对结构体进行排序
如何在 Swift 中通过属性对结构体进行排序
此问题已经有答案了:
我正在尝试根据其属性对结构体数组进行排序。
假设我想按x坐标对NSViews
数组进行排序。
我该如何实现呢?
admin 更改状态以发布 2023年5月22日
注意,您可以简化语法,这通常有助于提高可读性(重点在于您正在做什么,而不是类型等语法):
let sortedArray = sorted(allViewsArray) { $0.frame.origin.x < $1.frame.origin.x }
尾随闭包可以在函数调用圆括号外部,类似于其他块结构,如if
或while
;如果闭包表达式是单个语句,则可以跳过return
,并且可以跳过函数签名并使用$0
,$1
等表示参数名称。
当没有更多有用的名称可用时,最后的名称最好只使用$0
等(例如,p1
不比$0
更具描述性)。如果您确实想要为它们命名,则仍然可以跳过类型:
let sortedArray = sorted(allViewsArray) { p1, p2 in p1.frame.origin.x < p2.frame.origin.x }
Swift在应用此语法糖时有时可能有点脆弱,因此偶尔会发现它不能缩短多少,但通常会起作用。