Swift`reversed()

Swift`reversed(),swift,Swift,为什么这会产生埃琳娜而不是保拉 我原以为名字。倒转的应该是[“佐伊”、“保拉”、“埃琳娜”],然后是名字的位置。哈苏菲克斯“a”会跳过“佐伊”,然后转到“保拉”,然后中断,这样lastNameEndingInA就是“保拉” 我不明白为什么它不能像那样工作。你的阵列是[Paula,Elena,Zoe]。当它颠倒过来时是[佐伊,埃琳娜,保拉]。没有理由认为它会是[“佐伊”、“保拉”、“埃琳娜”]。因此,您的代码按预期工作 但它可以更容易地写成: let lastNameEndingInA = nam

为什么这会产生埃琳娜而不是保拉

我原以为名字。倒转的应该是[“佐伊”、“保拉”、“埃琳娜”],然后是名字的位置。哈苏菲克斯“a”会跳过“佐伊”,然后转到“保拉”,然后中断,这样lastNameEndingInA就是“保拉”


我不明白为什么它不能像那样工作。

你的阵列是[Paula,Elena,Zoe]。当它颠倒过来时是[佐伊,埃琳娜,保拉]。没有理由认为它会是[“佐伊”、“保拉”、“埃琳娜”]。因此,您的代码按预期工作

但它可以更容易地写成:

let lastNameEndingInA = names.reversed().first { $0.hasSuffix("a") }
如果希望名称按相反顺序排序,然后找到匹配项,请执行以下操作:

let lastNameEndingInA = names.sorted().reversed().first { $0.hasSuffix("a") }

只要去掉break关键字,你的反向数组就是Zoe,Elena,Paula。你为什么会认为是“佐伊”、“宝拉”、“埃琳娜”?@rmaddy你是对的。我想倒着排序,而不是倒着排序。我需要名字。颠倒。排序。谢谢@SRMR如我在回答中所示,它必须是names.sorted.reversed。如果你在最后排序,它会使反转变得毫无意义。是的,我真的应该这样做!我会在8分钟内给你的答案打上正确的分数。谢谢使用names.sorted.reversed代替names.sorted.reversed要反转排序,请使用names.sortedby:>。
let lastNameEndingInA = names.sorted().reversed().first { $0.hasSuffix("a") }