Class: Fukubukuro::ReturnStatement

Inherits:
Statement show all
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