Class: Basic101::UserDefinedFunction

Inherits:
Function
  • Object
show all
Includes:
Identity
Defined in:
lib/basic101/user_defined_function.rb

Instance Method Summary collapse

Methods included from Identity

#==

Methods inherited from Function

#check_args

Constructor Details

#initialize(identifier, parameters, expression) ⇒ UserDefinedFunction

Returns a new instance of UserDefinedFunction.



9
10
11
12
13
# File 'lib/basic101/user_defined_function.rb', line 9

def initialize(identifier, parameters, expression)
  @identifier = identifier
  @parameters = parameters
  @expression = expression
end

Instance Method Details

#call(runtime, args) ⇒ Object



19
20
21
22
23
24
25
26
# File 'lib/basic101/user_defined_function.rb', line 19

def call(runtime, args)
  raise InvalidArgumentError unless args.size == @parameters.size
  save_parameters(runtime)
  bind_arguments(runtime, args)
  result = @expression.eval(runtime)
  restore_parameters(runtime)
  result
end

#nameObject



15
16
17
# File 'lib/basic101/user_defined_function.rb', line 15

def name
  @identifier.to_s
end