Skip to content
Snippets Groups Projects
Commit 096d58d6 authored by pjs's avatar pjs
Browse files

Merge branch 'varargs'

parents b72ce230 760fe857
No related branches found
No related tags found
No related merge requests found
......@@ -11,10 +11,13 @@ class MyModel
end
def increment(n:, char:)
@x += n
schedule(:increment, 2.0 * rand(2), n: @x, char: char - 1, priority: 3)
printf "%f, %f, %c\n", model_time, @x, char
cancel_all :increment if model_time > 10
if model_time < 10.0
@x += n
schedule(:increment, rand(3), n: @x, char: char - 1, priority: 3)
printf "%f, %f, %c\n", model_time, @x, char
else
cancel_all :increment
end
end
end
......
......@@ -54,7 +54,7 @@ module SimpleKit
# - +args+ -> zero or more named arguments to pass to the event
# at invocation time. These should be specified with labels, and
# consequently they can be placed in any order.
def schedule(event, delay, **args)
def schedule(event, delay, args = {})
raise 'Model scheduled event with negative delay.' if delay < 0
@event_list.push EventNotice.new(event, @model_time, delay, args)
end
......@@ -65,9 +65,10 @@ module SimpleKit
# all be a match with the corresponding +args+ of the scheduled event
# in order for the cancellation to apply, but +args+ which are not
# specified do not affect the target event matching.
def cancel(event, **args)
def cancel(event, args = {})
@cancel_set[event] ||= Set.new
@cancel_set[event].add(args.empty? ? nil : args)
# @cancel_set[event].add(args.empty? ? nil : args)
@cancel_set[event].add(args)
end
# Cancel all currently scheduled events of type +event+.
......@@ -96,7 +97,7 @@ module SimpleKit
if current_event.args.empty?
@user_model.send(current_event.event)
else
@user_model.send(current_event.event, current_event.args)
@user_model.send(current_event.event, **current_event.args)
end
end
end
......
# -*- ruby -*-
_VERSION = "1.0.0"
_VERSION = "1.1.0"
Gem::Specification.new do |s|
s.name = "simplekit"
s.version = _VERSION
s.date = "2018-07-12"
s.date = "2020-04-09"
s.summary = "Discrete event simulation engine."
s.homepage = "https://gitlab.nps.edu/pjsanche/simplekit-ruby.git"
s.email = "pjs@alum.mit.edu"
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment