小编Man*_*iel的帖子

Kotlin安全成对迭代

我刚开始使用Kotlin,为了进行练习,我想成对读取程序参数。

程序的输入如下Alice 10 Bob 20 ...

我有一个当前版本,可以通过分块输入并成对迭代来合理地工作

for((name, age)  in args.asIterable().chunked(2)) 
Run Code Online (Sandbox Code Playgroud)

但是,如果我传递的参量数量不一,则最后一个分块列表仅包含一个元素,并且赋值失败并带有IndexOutOfBoundsException。

我可以通过在分块列表上添加一个过滤器来完成这项工作,如果它的大小不正确,该过滤器将丢弃最后一个列表:

 for((name, age)  in args.asIterable().chunked(2).filter { it -> it.size==2 })
Run Code Online (Sandbox Code Playgroud)

但是,我对此有一些问题

  • 我有两次指定的列表长度
  • 有了过滤器,它看起来不那么可读和优雅
  • 筛选器必须遍历整个列表,但只有最后一个子列表才是相关的

是使分块仅返回完整块的好方法,还是仅读取完整子列表的安全且优雅的方法?

functional-programming kotlin

0
推荐指数
1
解决办法
46
查看次数

标签 统计

functional-programming ×1

kotlin ×1