我正在尝试找出Kotlin Map<String, SimpleData>
的lambda之间的区别。 Kotlin网站说:“与Java的SAM转换相反,Kotlin具有适当的功能类型”
我认为这是最大的不同。因此,您需要Java中的Functional接口。在kotlin中,您具有函数类型。您不需要额外的界面。
您可以在Kotlin中调用lambda。因此,如果将Java中的lambda传递给函数,则必须在该函数的主体内部调用Single抽象方法。
class MapTest {
final _mapHell = Map<String, SimpleData>(); // Change the Map type
MapTest() {
_mapHell['1'] = SimpleData(42, "Astfgl"); // Use int, ie: '1'
_mapHell['666'] = SimpleData(1234, "Vassenego");
}
MapTest.fromJson(Map<String, dynamic> json) {
_mapHell = jsonDecode(json['coworkers']);
}
Map<String, dynamic> toJson() => {
'coworkers' : jsonEncode(_mapHell),
};
}
和科特林的方式:
s and Java
因此,我认为这是kotlin的一大优势,您可以使用自定义数量的参数等创建自己的lambda,而无需创建额外的功能接口或使用任何currying。
另一个差异和优势是可以使用接收方调用lambda。我想每个人都知道这个概念,所以我可以在这里略过。您可以构建DSL,并具有范围功能。
啊,如果它是最后一个参数,则可以在()之外传递lambda。我认为这也是java和lambda之间的重要区别。它更具可读性。
我认为那是区别,还是我错过了一些基本知识?
更新:
由于@Animesh Sahu,我忘记了内联lambda的可能性
并且可以返回一个块内的最后一个表达式。因此,您不必显式调用“ return”