例如,我可能想进行如下分配(在JavaScript中):
var x = (function () {
// do some searching/calculating
return 12345;
})();
在Java中,如何使用Lambdas做类似的事情?编译器不喜欢这样的东西:
Item similarItem = () -> {
for (Item i : POSSIBLE_ITEMS) {
if (i.name.equals(this.name)) return i;
}
return null;
}();
否,因为Lambda需要目标类型。您所能做的最好是将表达式转换为:
Item similarItem = ((Supplier<Item>) (() -> {
for (Item i : POSSIBLE_ITEMS) {
if (i.name.equals(this.name)) return i;
}
return null;
})).get();
您必须为特定的lambda使用正确的功能接口。如您所见,它非常笨拙,没有用。
更新
上面的代码是JavaScript代码的直接翻译。但是,直接转换代码并不能总是获得最佳结果。
在Java中,您实际上会使用
流
来执行该代码正在执行的操作:
Item similarItem = POSSIBLE_ITEMS.stream()
.filter(i -> i.name.equals(this.name))
.findFirst()
.orElse(null);
上面的代码假设POSSIBLE_ITEMS
是Collection
,可能是List
。如果是数组,请改用此数组:
Item similarItem = Arrays.stream(POSSIBLE_ITEMS)
.filter(i -> i.name.equals(this.name))
.findFirst()
.orElse(null);
例如,我可能想做这样的作业(在JavaScript中): 在Java中,我如何使用Lambdas做类似的事情?编译器不喜欢这样的东西:
问题内容: 在JavaScript中,您可以定义立即执行的匿名函数: 您可以在PHP中做类似的事情吗? 问题答案: 对于PHP7:请参阅OhgakiYasuo的答案: 对于以前的版本:我能想到的立即执行它们的唯一方法是
问题内容: 我想知道Python是否具有类似C#匿名类功能的东西。为了澄清,这是一个示例C#代码段: 在Python中,我会想象这样的事情: 特定要求是能够在表达式上下文中创建具有指定字段的对象(例如,可在lambda和不允许使用语句的其他地方使用),而无需其他外部声明,并且能够通过普通成员按名称访问各个组件访问语法。创建的对象还应按 组件名称 (而不是像元组那样按位置)实现结构比较。 特别是:元
php版本: 5.4 我定义了一个这样的函数 输出是 如何在的正文中引用。
前言 大家学JavaScript的时候,经常遇到自执行匿名函数的代码,今天我们主要就来想想说一下自执行。 在详细了解这个之前,我们来谈了解一下“自执行”这个叫法,本文对这个功能的叫法也不一定完全对,主要是看个人如何理解,因为有的人说立即调用,有的人说自动执行,所以你完全可以按照你自己的理解来取一个名字,不过我听很多人都叫它为“自执行”,但作者后面说了很多,来说服大家称呼为“立即调用的函数表达式”。
本文向大家介绍什么是JavaScript中的自调用匿名函数?,包括了什么是JavaScript中的自调用匿名函数?的使用技巧和注意事项,需要的朋友参考一下 在JavaScript中,用括号括起来的函数称为“立即调用函数表达式”或“自执行函数”。 包装的目的是为了命名空间并控制成员函数的可见性。它将代码包装在函数范围内,并减少了与其他库的冲突。这就是我们所说的立即调用函数表达式(IIFE)或自执行匿