You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Swift函数式反转单词:隔词反转的实现困惑

解决隔词反转的函数式实现思路

你遇到的问题其实很常见——普通的map只处理单个元素,但隔词反转需要知道每个单词的位置(索引),这正是你之前忽略的点!函数式编程里不是只能用无状态的map,我们可以借助enumerated()来获取每个元素的索引,再结合条件判断实现交替反转。

先基于你已有的全单词反转代码做改造:

import UIKit

let input = "This is a sample sentence"

func reverseEveryOtherWord(input: String) -> String {
    let parts = input.components(separatedBy: " ")
    // 使用enumerated()获取每个元素的索引和对应单词
    let processed = parts.enumerated().map { index, word in
        // 这里判断:索引为偶数(从0开始)的单词反转,奇数的保持原样
        // 如果你想反转奇数索引的单词,改成index % 2 == 1即可
        index % 2 == 0 ? String(word.reversed()) : word
    }
    return processed.joined(separator: " ")
}

reverseEveryOtherWord(input: input)
// 输出结果:"sihT is a elpmas sentence"

关键细节解释:

  • enumerated()会把数组转换成(offset: Int, element: String)的序列,这样我们就能拿到每个单词的位置索引。
  • 在map里加入条件判断,根据索引的奇偶性决定是否反转单词,全程不需要循环,完全符合函数式编程的无状态转换特性。
  • 如果你需要其他“隔词反转”规则(比如从第二个单词开始反转),只需要调整index % 2的判断条件即可,非常灵活。

内容的提问来源于stack exchange,提问作者user9470831

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:09:15