什么(x..x).map在kotlin android中做什么

时间:2017-07-31 12:06:49

标签: android kotlin

一直在网上看一些kotlin例子并看到以下内容,我无法确切地知道它在做什么。

(0..6).map{ inflater.inflate(R.layout.test, container) }

我知道这是一个将R.layout.test扩展到容器的范围但是“.map”的意思是什么?

这是写for (i in 0..6)的另一种方式吗?

3 个答案:

答案 0 :(得分:1)

map将输入转换为输出。因为Kotlin可以推断出它是唯一一个被称为it的论点。所以你的代码等同于:

(0..6).map{ it => inflater.inflate(R.layout.test, container) }

你可以看到你没有使用it参数

因此,在执行此操作后,您将获得从R.layout.test

中膨胀的7个视图(从0到6)的列表

您可以在documentation

中找到有关map的更多信息

答案 1 :(得分:0)

这是Lambda表达式。它只是膨胀 R.layout.test 并将此视图添加到容器。您引用的示例是GridView,需要在容器中添加此视图7次,这是(1..6)在此处执行的操作。

答案 2 :(得分:0)

在链接代码中,重复某些操作只是一种不同且不太惯用的方法。

如果不使用转换的结果,可以使用以下方法代替map函数:

// for loop
for (n in 0..6) inflater.inflate(R.layout.test, container)

// forEach extension
(0..6).forEach { inflater.inflate(R.layout.test, container) }

// repeat function
repeat(7) { inflater.inflate(R.layout.test, container) }