标签: lambda

我有一个不同对象的arraylist:如何使用lambda来提取某些类型的列表?

为简单起见,假设我有一个包含A,B和C类型对象的ArrayList.如何只提取A类对象?

c# linq lambda arraylist

0
推荐指数
1
解决办法
862
查看次数

如何验证lambda表达式是否有结果

我是使用lambda表达的新手,对不起是一个愚蠢的问题.无论如何,请考虑此声明:

MethodInfo methodInfo = methodInfos.Where(k => k.GetCustomAttributes(typeof(DLMethodAttribute), false).Length > 0).Single();
Run Code Online (Sandbox Code Playgroud)

我的问题是如何判断谓词部分是否有结果,考虑methodinfos没有任何成员具有属性.我有一条错误消息告诉"序列不包含任何元素"

c# lambda attributes

0
推荐指数
1
解决办法
789
查看次数

LISP如何将lambda函数与名称/符号相关联以便稍后调用它?

正如标题所说,我想给我的lambda函数一个名称,以便稍后在我的代码中调用它.

但是我要将它与之关联的名称是一个变量.我能做什么?

(defparameter funct-name 'addone)
 funct-name = (lambda (x) (x+1))
Run Code Online (Sandbox Code Playgroud)

所以我的电话必须是这样的:

(addone 3)
Run Code Online (Sandbox Code Playgroud)

funct-name 是一个变量,包含我想要给我的lambda函数的名称.

lisp lambda

0
推荐指数
1
解决办法
143
查看次数

为什么组合lambda表达式在linq中不起作用?

代表可以合并,所以:

MethodInvoker del = delegate { Console.WriteLine("Delegate 1"); };
del += delegate { Console.WriteLine("Delegate 2"); };
del.Invoke();
Run Code Online (Sandbox Code Playgroud)

输出:

Delegate 1 
Delegate 2
Run Code Online (Sandbox Code Playgroud)

既然它调用了两种方法,我试着看它是否会起作用:

Func<Person, bool> filters = person => person.Name.Contains("John");
filters += person => person.Age >= 18;

List<Person> persons = getPersons();

persons.Where(filters);
Run Code Online (Sandbox Code Playgroud)

但它没有,只有最后应用(在这种情况下 person => person.Age >= 18).

我的问题是:为什么不呢?有可能实现这个吗?(并不是说我会重写Linq的扩展方法只是为了实现它,但如果可能的话会很酷)

注意: 我知道在LINQ to Objects中,执行此操作会类似,因为执行是延迟的:

persons.Where( x => x.Name.Contains( nameFilter )).Where( x => x.Age >= 18 );
Run Code Online (Sandbox Code Playgroud)

但这不是我感兴趣的.

c# linq lambda

0
推荐指数
1
解决办法
176
查看次数

LINQ - 列表过滤中的列表

我有这些课程:

public class Flight
{
    public string FlightNum { get; set; }
    public List<Pax> Pax { get; set; }
}

public class Pax
{
    public string PaxName { get; set; }
    public string PaxSurName { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我想过滤航班,以便它只包含乘客姓名是 我试过的某个字符串的航班:

var paxList = flights.Where(f => f.Pax.Where(p => p.PaxName == "d"));
Run Code Online (Sandbox Code Playgroud)

上面的代码不起作用......例如:我想在SINGLE Lambda表达式中使用它

.net linq lambda list

0
推荐指数
1
解决办法
1959
查看次数

Python sorted()函数不应该按照它应该的方式工作

基本上我有一个嵌套列表,我试图通过第一个索引进行排序我复制了python howto如何做的方式,但它似乎不起作用,我不明白为什么:

来自网站的代码:

>>> student_tuples = [
    ('john', 'A', 15),
    ('jane', 'B', 12),
    ('dave', 'B', 10),
    ]
>>> sorted(student_tuples, key=lambda student: student[2])   # sort by age
    [('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)]
Run Code Online (Sandbox Code Playgroud)

我的代码:

def print_scores(self):
    try:
        #opening txt and reading data then breaking data into list separated by "-"
        f = open(appdata + "scores.txt", "r")
        fo = f.read()
        f.close()
        userlist = fo.split('\n')
        sheet_list = []
        for user in userlist:
            sheet = user.split('-')
            if len(sheet) != 2:
                continue …
Run Code Online (Sandbox Code Playgroud)

python lambda nested list sorted

0
推荐指数
1
解决办法
9606
查看次数

在类中存储Lambda

当需要将lambda存储为类成员以便可以延迟调用时,最佳实践是什么?更具体地说,将传递给deferred_lambda下面的代码清单中的类的lambda存储为参考是否安全?如果不是,如果我将lambda存储deferred_lambda为值而不是作为引用,是否安全?

最后,与使用g ++进行常规函数调用相比,我是否可以预期会产生性能损失,以便以这种方式将lambda存储为类成员?也就是说,使用deferred_lambda.invoke()比operator()实现相同操作的某个虚拟结构的调用要慢?

使用g ++,我注意到lambda的大小随着我使用更多捕获的变量而增加.我想这是可以预料到的,因为根据我的理解,编译器在内部为lambda生成一个struct,它包含必要的捕获变量作为成员.这种观察导致了我现在要问的问题,因为按时间和内存存储lambda值可能比存储对它们的引用更昂贵.

template <class Func>
class deferred_lambda
{
    Func& func_;
public:
    deferred_lambda(Func func) : func_(func) {}
    void invoke() { func_(); }
};

template <class Func>
deferred_lambda<Func> defer_lambda(Func func)
{
    return deferred_lambda(func);
}

void foo()
{
    int a, b, c;
    auto x = defer_lambda([&]() { a = 1; b = 2; c = 3; });
} 
Run Code Online (Sandbox Code Playgroud)

c++ lambda inline c++11

0
推荐指数
1
解决办法
1820
查看次数

按方法结果对List <T>集合进行排序.

我有下一个班级和这个班级的集合.我如何通过asc对Perimeter()进行排序?

    public class Circle
    {
        private double _r;

        public Double Radius
        {
            get { return _r; }
            set { _r = value; }
        }

        public double Perimeter ()
        {
            return 2*Math.PI*Radius;
        }
    }
...
var lst = new List<Circle>();
Run Code Online (Sandbox Code Playgroud)

c# sorting lambda

0
推荐指数
1
解决办法
134
查看次数

C#lambda简化

我有一个班级玩家,玩家有一个镜头列表.每个镜头都有自己的yPos(位置)因为玩家的yPos可以改变但是射击会保持他的位置:

class Player
{
    public string Id { set; get; }
    public int yPos { set; get; }
    public List<Shot> shots;

    public Player(string _Id, int _yPos)
    {
        Id = _Id;
        yPos = _yPos;
    }

}
class Shot
{
    public int yPos { set; get; }
    public Shot(int _yPos)
    {
        yPos = _yPos;
    }
}
Run Code Online (Sandbox Code Playgroud)

然后在游戏中的某个时刻有一个id,我需要找到玩家.并添加他的投篮列表与球员位置的新镜头.
这是我最终得到的:

string tempID = "xxx"; // not important where this temp id is coming from
players.Find(p => p.Id == tempID).shots.Add(new Shot(players.Find(p => p.Id == tempID).yPos)); …
Run Code Online (Sandbox Code Playgroud)

c# lambda

0
推荐指数
1
解决办法
144
查看次数

MethodGroup作为通用参数

我正在尝试编写一个从给定输入返回methodinfo类的方法,以创建该方法的泛型版本...即

var m = myClass.GetType().GetMethod("SomeMethod").MakeGenericMethod(...blahblah..);
Run Code Online (Sandbox Code Playgroud)

这是有效的,除了我有我的方法名称的字符串文字,所以如果在重新分解的过程中我碰巧重命名我正在使用的方法之一,我直到运行时才发现.

我想要做的是创建一个帮助方法,我可以传递lamba到指定方法组,这样我将得到方法名称的编译时间检查,更不用说智能感知等...即.

MethodInfo mi = myClass.GetMethodInfo( o => o.SomeMethod );
m = mi.MakeGenericMethod(..blah...);
Run Code Online (Sandbox Code Playgroud)

但是我无法弄清楚助手的方法签名......

public MethodInfo GetMethodInfo(Func<MyClass,XXXX> lambda){ //What is my XXXX ? }
Run Code Online (Sandbox Code Playgroud)

c# reflection lambda

0
推荐指数
1
解决办法
115
查看次数

标签 统计

lambda ×10

c# ×6

linq ×3

list ×2

.net ×1

arraylist ×1

attributes ×1

c++ ×1

c++11 ×1

inline ×1

lisp ×1

nested ×1

python ×1

reflection ×1

sorted ×1

sorting ×1