标签: lambda

C#lambda表达式可以有多个语句吗?

C#lambda表达式可以包含多个语句吗?

(编辑:正如以下几个答案中所提到的,这个问题最初是关于"行"而不是"陈述".)

c# lambda

120
推荐指数
5
解决办法
6万
查看次数

在Java 8中,带有2个箭头的lambda是什么意思?

我以前读了几篇Java 8教程.

现在我遇到了以下主题: java支持Currying吗?

在这里,我看到以下代码:

IntFunction<IntUnaryOperator> curriedAdd = a -> b -> a + b;
System.out.println(curriedAdd.apply(1).applyAsInt(12));
Run Code Online (Sandbox Code Playgroud)

我明白这个例子总结了2个元素,但我无法理解构造:

a -> b -> a + b;
Run Code Online (Sandbox Code Playgroud)

根据表达式的左侧部分,该行应实现以下功能:

R apply(int value); 
Run Code Online (Sandbox Code Playgroud)

在此之前,我只用一支箭只遇到了lambdas.

java lambda currying java-8

118
推荐指数
6
解决办法
1万
查看次数

除了保存代码行之外,lambda表达式还有什么用处吗?

除了保存代码行之外,lambda表达式还有什么用处吗?

lambda提供的特殊功能是否解决了不容易解决的问题?我见过的典型用法是代替写这个:

Comparator<Developer> byName = new Comparator<Developer>() {
  @Override
  public int compare(Developer o1, Developer o2) {
    return o1.getName().compareTo(o2.getName());
  }
};
Run Code Online (Sandbox Code Playgroud)

我们可以使用lambda表达式来缩短代码:

Comparator<Developer> byName =
(Developer o1, Developer o2) -> o1.getName().compareTo(o2.getName());
Run Code Online (Sandbox Code Playgroud)

java lambda java-8

117
推荐指数
5
解决办法
2万
查看次数

什么是Java中的"SAM类型"?

阅读Java-8规范,我不断看到对"SAM类型"的引用.我无法找到明确解释这是什么.

什么是SAM类型以及什么是何时可以使用的示例场景?

java lambda java-8

116
推荐指数
1
解决办法
3万
查看次数

内置的Java 8谓词总是返回true?

Google Guava有一个始终返回true的谓词.Java 8有类似的东西Predicate吗?我知道我可以使用(foo)->{return true;},但我想要预制的东西,类似于Collections.emptySet().

java lambda predicate java-8

116
推荐指数
3
解决办法
4万
查看次数

将.net Func <T>转换为.net Expression <Func <T >>

使用方法调用很容易从lambda转到Expression

public void GimmeExpression(Expression<Func<T>> expression)
{
    ((MemberExpression)expression.Body).Member.Name; // "DoStuff"
}

public void SomewhereElse()
{
    GimmeExpression(() => thing.DoStuff());
}
Run Code Online (Sandbox Code Playgroud)

但我想将Func转换为表达式,仅在极少数情况下......

public void ContainTheDanger(Func<T> dangerousCall)
{
    try 
    {
        dangerousCall();
    }
    catch (Exception e)
    {
        // This next line does not work...
        Expression<Func<T>> DangerousExpression = dangerousCall;
        var nameOfDanger = 
            ((MemberExpression)dangerousCall.Body).Member.Name;
        throw new DangerContainer(
            "Danger manifested while " + nameOfDanger, e);
    }
}

public void SomewhereElse()
{
    ContainTheDanger(() => thing.CrossTheStreams());
}
Run Code Online (Sandbox Code Playgroud)

不起作用的行给了我编译时错误Cannot implicitly convert type 'System.Func<T>' to 'System.Linq.Expressions.Expression<System.Func<T>>'.显式强制转换无法解决问题.我有一个设施可以做到这一点吗?

.net c# lambda expression func

113
推荐指数
7
解决办法
6万
查看次数

如何用lambda排序?

sort(mMyClassVector.begin(), mMyClassVector.end(), 
    [](const MyClass & a, const MyClass & b)
{ 
    return a.mProperty > b.mProperty; 
});
Run Code Online (Sandbox Code Playgroud)

我想使用lambda函数来排序自定义类来代替绑定实例方法.但是,上面的代码会产生错误:

错误C2564:'const char*':对内置类型的函数式转换只能接受一个参数

它工作得很好boost::bind(&MyApp::myMethod, this, _1, _2).

c++ sorting lambda const char

111
推荐指数
3
解决办法
13万
查看次数

使用lambda分组多列

如何使用lambda将多列分组?

我看到了如何使用linq实现它的示例,但我正在寻找lambda形式.

.net c# lambda entity-framework

109
推荐指数
3
解决办法
14万
查看次数

如何从List <T>中获取每个第n项?

我正在使用.NET 3.5,并希望能够n从列表中获取每个**项.我对使用lambda表达式还是LINQ实现它并不感到困扰.

编辑

看起来这个问题激起了很多争论(这是一件好事,对吧?).我学到的主要是,当你认为你知道每一种做某事的方式时(尽管这很简单),再想一想!

c# linq lambda list

108
推荐指数
6
解决办法
7万
查看次数

通用lambda如何在C++ 14中工作?

auto在C++ 14标准中,通用lambda如何工作(关键字作为参数类型)?

它是基于C++模板的,每个不同的参数类型编译器生成一个具有相同主体但替换类型(编译时多态)的新函数,还是更类似于Java的泛型(类型擦除)?

代码示例:

auto glambda = [](auto a) { return a; };
Run Code Online (Sandbox Code Playgroud)

c++ lambda auto c++14

108
推荐指数
3
解决办法
4万
查看次数

标签 统计

lambda ×10

c# ×4

java ×4

java-8 ×4

.net ×2

c++ ×2

auto ×1

c++14 ×1

char ×1

const ×1

currying ×1

entity-framework ×1

expression ×1

func ×1

linq ×1

list ×1

predicate ×1

sorting ×1