Merge two lists together using :~: operator.

← Operators and Expressions · Ref: Q1081

Merge one list into another with :~::

  team :~: newHires

All elements from the source are added to the end of the target. The source is unchanged.

See Q1058 for copy vs merge vs replace.

Example

defines module qa.operators.mergecollection

  defines program

    MergeCollectionDemo()
      stdout <- Stdout()

      //Two separate lists of names
      team <- ["Alice", "Bob", "Charlie"]
      newHires <- ["Diana", "Eve"]
      stdout.println(`Team: ${team}`)
      stdout.println(`New hires: ${newHires}`)

      //Merge new hires into the team list
      team :~: newHires
      stdout.println(`After merge: ${team}`)

      //Merge a single element
      team :~: "Frank"
      stdout.println(`After single merge: ${team}`)

Common mistakes

E50060 — EK9's List has no addAll method — use the merge operator ':~:' to add all elements of one list into another. See ek9 -h E50060 for details.

Incorrect:

team.addAll(newHires)

Correct:

team :~: newHires
Other ways to ask this
  • Add all elements from one list into another list
  • Combine two lists in place using :~:
  • In Java I'd use addAll(). What is the EK9 equivalent?
  • I have two lists and need to merge the second into the first

Coming from another language?

Java: list.addAll(other). Python: list.extend(other). Go: append(slice, other...). EK9: list :~: otherList or list += otherList.

Keywords: addAll, collection, append, merge, list, combine, :~: