Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- const std = @import("std");
- const builtin = @import("builtin");
- fn foo(n: usize) usize {
- return n * 10;
- }
- fn makefunc(comptime func: var) @typeOf(func) {
- const TargetFnType = @typeOf(func);
- const target_fn_info = @typeInfo(TargetFnType).Fn;
- const args = target_fn_info.args;
- return struct {
- fn call(n: args[0].arg_type.?) TargetFnType.ReturnType {
- std.debug.warn("calling a function\n");
- std.debug.warn("{}\n", n);
- return func(n);
- }
- }.call;
- }
- const decorated = makefunc(foo);
- const doubledecorated = makefunc(decorated);
- pub fn main() void {
- //std.debug.warn("{}\n", decorated(10));
- std.debug.warn("{}\n", doubledecorated(10));
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement