一直在网上看一些kotlin例子并看到以下内容,我无法确切地知道它在做什么。
(0..6).map{ inflater.inflate(R.layout.test, container) }
我知道这是一个将R.layout.test扩展到容器的范围但是“.map”的意思是什么?
这是写for (i in 0..6)
的另一种方式吗?
答案 0 :(得分:1)
map
将输入转换为输出。因为Kotlin可以推断出它是唯一一个被称为it
的论点。所以你的代码等同于:
(0..6).map{ it => inflater.inflate(R.layout.test, container) }
你可以看到你没有使用it
参数
因此,在执行此操作后,您将获得从R.layout.test
您可以在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) }