News for hackers. Stuff that matters.
Re:Ask HN: How do you explain closures? by tome on Friday November 06, 2009 @11:57AM (#926359)
I'm not convinced by the utility of your example. What's wrong with:

    foreach (var obj in objects) {
      AddButton("Delete " + obj.ToString(), obj.Delete);
    }
This is even simpler and doesn't use closures at all.
Re:Ask HN: How do you explain closures? by rleisti on Friday November 06, 2009 @12:10PM (#926388)
Doh!

It would have made more sense if I had some other piece of information to inject in, like if you had a database reference that needed to be passed in to the Delete() method.

Then:

  AddButton("Delete " + obj.ToString(), () => obj.Delete(db));
Vs.

  var d = new DeleteHandler(obj, db);
  AddButton("Delete " + obj.ToString(), d.DoDelete);
EDIT: fixed
Re:Ask HN: How do you explain closures? by tome on Friday November 06, 2009 @12:46PM (#926473)
Yup, makes more sense now! This is a good example, I think, to give to people who are used to objects being used for everything. Nice, clean, functional syntax.

(And of course you mean "d.DoDelete")