Skip to content

Instantly share code, notes, and snippets.

@remram44
Last active September 22, 2024 02:26
Show Gist options
  • Select an option

  • Save remram44/5833870 to your computer and use it in GitHub Desktop.

Select an option

Save remram44/5833870 to your computer and use it in GitHub Desktop.
Python's versus Lua's closures
#include <functional>
#include <iostream>
#include <vector>
int main()
{
std::vector<std::function<int (int)>> l;
for(int i = 0; i < 10; ++i)
l.push_back([=](int x) { return i + x; });
std::cout << l[2](3) << std::endl; // 5
return 0;
}
l = {}
for i = 0, 10 do
l[i] = function(x) return x + i end
end
print(l[2](3))
-- 5
l = []
for i in range(10):
l.append(lambda x: x + i)
print(l[2](3))
# 12
@ben-brook
Copy link
Copy Markdown

Anyway, I also found this while curious about whether Python uses the term upvalue :P

@remram44
Copy link
Copy Markdown
Author

The Python documentation refers to them as "cells", see for example in data model and PyFunction.

@ben-brook
Copy link
Copy Markdown

Cool, thank you!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment