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

Dart中splitBetween方法工作逻辑解析:基于给定代码示例

解析splitBetween方法的工作逻辑

这个splitBetween是一个自定义的列表扩展方法,核心作用是依据相邻元素的判断条件,将原列表拆分成多个连续子列表,具体逻辑如下:

核心运行规则

它接收一个二元判断函数作为参数,函数的两个参数对应列表里相邻的两个元素(v1是前一个元素,v2是后一个元素)。当这个判断函数返回true时,就会在v1和v2之间插入分割点:把v1所在的当前子列表存入结果,从v2开始新建一个子列表继续收集后续元素。

结合示例的执行流程

拿你的输入列表[1,2,4,11,14,15,16,16,19,30,31,50,51,100,101,105]和判断条件(v1, v2) => (v2 - v1).abs() > 6来说:

  1. 初始化结果集合,同时创建第一个子列表,先加入第一个元素1。
  2. 遍历后续元素:
    • 2和1的差为1,不满足>6的条件,加入当前子列表 → 子列表变为[1,2]。
    • 4和2的差为2,不满足条件,加入当前子列表 → 子列表变为[1,2,4]。
    • 11和4的差为7,满足条件:将[1,2,4]存入结果,新建子列表并加入11。
    • 14、15、16、16、19和前一个元素的差都≤6,全部加入当前子列表 → 子列表变为[11,14,15,16,16,19]。
    • 30和19的差为11,满足条件:将当前子列表存入结果,新建子列表加入30。
    • 31和30差1,不满足条件,加入当前子列表 → [30,31]。
    • 50和31差19,满足条件:存入当前子列表,新建子列表加入50。
    • 51和50差1,加入子列表 → [50,51]。
    • 100和51差49,满足条件:存入当前子列表,新建子列表加入100。
    • 101、105和前一个元素的差都≤6,加入子列表 → [100,101,105]。
  3. 遍历结束后,把最后一个子列表[100,101,105]存入结果集合,最终得到输出的子列表组。

通用结论

  • 拆分触发的唯一条件是相邻元素满足传入的判断逻辑。
  • 每个子列表都是原列表中连续的、相邻元素均不触发拆分条件的元素集合。
  • 原列表的首尾元素会分别成为第一个和最后一个子列表的首尾元素。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 19:00:53