Kotlin中的嵌套lambda调用
在Kotlin中嵌套lambda调用时,如何明确地引用子元素和父元素的Kotlin中的嵌套lambda调用,kotlin,Kotlin,在Kotlin中嵌套lambda调用时,如何明确地引用子元素和父元素的it元素?例如: data class Course(var weekday: Int, var time: Int, var duration: Int) var list1 = mutableListOf<Course>() var list2 = mutableListOf<Course>() // populate list1 and list2 // exclude any element f
it
元素?例如:
data class Course(var weekday: Int, var time: Int, var duration: Int)
var list1 = mutableListOf<Course>()
var list2 = mutableListOf<Course>()
// populate list1 and list2
// exclude any element from list1 if it has the same time and weekday as any element from list2
list1.filter { list2.none{it.weekday == it.weekday && it.time == it.time} }
数据类课程(变量工作日:Int,变量时间:Int,变量持续时间:Int)
var list1=mutableListOf()
var list2=mutableListOf()
//填充列表1和列表2
//如果列表1中的任何元素与列表2中的任何元素具有相同的时间和工作日,则从列表1中排除该元素
list1.filter{list2.none{it.weekday==it.weekday&&it.time==it.time}
它始终引用最内部的lambda参数,要访问外部参数,必须命名它们。例如:
list1.filter { a -> list2.none { b -> a.weekday == b.weekday && a.time == b.time} }
(您可以将内部代码保留为it
,但在我看来,如果您也将其命名的话,会更好一些。)
编辑:@mfulton26链接了下面的相关文档,有关详细信息,请参阅。在示例代码中,var(list1,list2)=ArrayList()
不创建两个列表,而是尝试将空的ArrayList
分为两个课程
实例,运行时会失败,因为它是空的。不过,下面的方法会起作用:val list1=mutableListOf();val list2=mutableListOf()
谢谢,已编辑。但是有没有一种方法可以声明任意两个变量并为它们指定相同的值呢?我不推荐这种方法。:-)请随意搜索StackOverflow并添加问题(如果还没有)。您可以添加相关文档的链接。即和。您也可以使用。e、 g.:list1.filter{(weekday1,time1)->list2.none{(weekday2,time2)->weekday1==weekday2&&time1==time2}}
。