I think one of Lua's nice features is that all functions are first-
class functions. That makes it possible to override behavior like
this:
-- Sample stolen from Wikipedia
local oldprint = print -- Store current print function as
oldprint
print = function(s) -- Redefine print function
if s == "foo" then
oldprint("bar")
else
oldprint(s)
end
end
module Kernel
alias_method :old_print, :print
def my_print(*args)
old_print "bar"
end
alias_method :print, :my_print
end
irb(main):017:0> print "hey"
bar
=> nil
There are several approaches to achieve the same, that's the beauty or
the curse of Ruby
As more complex example, you can check how rubygems replace 'require'
functionality to be able to pick code outside the default $LOAD_PATH.
HTH,
···
On Nov 15, 12:12 pm, Dolazy <francis.ramme...@gmail.com> wrote:
I think one of Lua's nice features is that all functions are first-
class functions. That makes it possible to override behavior like
this:
-- Sample stolen from Wikipedia
local oldprint = print -- Store current print function as
oldprint
print = function(s) -- Redefine print function
if s == "foo" then
oldprint("bar")
else
oldprint(s)
end
end