Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -- CODE
- class Subs
- def initialize(name, &block)
- @@subs = {} if @@subs == nil
- @@subs[name.to_sym] = {:code => block}
- end
- def Subs.call(name, *args)
- sym = name.to_sym
- @@subs[sym][:args] = args.reverse
- @@subs[sym][:args_const] = args.reverse
- @@subs[sym][:code].call(args)
- @@calling = sym
- end
- def shift
- ret = @@subs[@@calling][:args].last
- @@subs[@@calling][:args] = @@subs[@@calling][:args_const].take @@subs[@@calling][:args].length - 2
- return ret
- end
- end
- -- ERROR
- irb(main):148:0> Subs.new 'test', { puts 'lol'}
- SyntaxError: (irb):148: syntax error, unexpected tSTRING_BEG, expecting keyword_do or '{' or '('
- Subs.new 'test', { puts 'lol'}
- ^
- (irb):148: syntax error, unexpected '}', expecting $end
- from /usr/bin/irb:12:in `<main>'
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement