Class: Fukubukuro::ReturnStatement
- Defined in:
- lib/amber/fukubukuro.rb
Overview
class FunctionCall < Statement
def self.new function, *arguments
if false # cacheable?
case arguments.size
when 0
raise
cache = nil
super() do
cache ||= function.call
end
when 1
arg = arguments.first
super() do
function.call(arg.value)
end
else
raise
cache = {}
super() do
cache.delete cache.first.first if cache.size >= 16
values = arguments.map { |a| a.value }
cache[values] ||= function.call(values)
end
end
else
case arguments.size
when 0
super() do
function.call
end
when 1
arg = arguments.first
super() do
function.call(arg.value)
end
else
super() do
function.call(*arguments.map { |a| a.value })
end
end
end
end
end
Class Method Summary collapse
Class Method Details
.new(result) ⇒ Object
843 844 845 846 847 |
# File 'lib/amber/fukubukuro.rb', line 843 def self.new result super() do throw :return, result.value end end |