Add Operator

adds a value to an attribute on a record


// Add a value to an attribute
record.attribute += value

// Add a tag to a record
record += #tag


record.attribute += value adds value to attribute. If record already has an attribute with a value, then value will be added to the set. Otherwise, if record doesn’t have an attribute with this name already, then += will create the attribute and set it to value. As Eve variables are sets, if the value already exists on the attribute, the value cannot be added again.

attribute can be an attribute already on the record, or it can be a new attribute.

value can be a string or number literal, a variable bound to one of these, or a record.

record += #tag adds #tag to record. This is shorthand for record.tag += "tag".


Add the current second to a record. Since Eve works in sets, time-history can only ever hold then numbers 0 through 60. This means after one minute passes, no new elements will be added to tracker.time-history.

  tracker = [#seconds-tracker]
  [#time seconds]

  tracker.time-history += seconds

We can get around this by adding a record:

  tracker = [#seconds-tracker]
  [#time seconds]

  tracker.time-history += [seconds]

Now, instead of adding numbers to time-history we are adding records, which are associated with a unique ID. So after the first minute passes, time-history will contain duplicate seconds, but the record ID will ensure each one is unique.

Add the #honor-student tag to any #student with a GPA greater than 3.75:

  student = [#student gpa > 3.75]
  student += #honor-student

See Also

set operator | remove operator | merge operator | bind | commit