Written by

Training Sales Engineer at InterSystems Japan
Article Mihoko Iijima · Oct 12, 2023 1m read

How to pass changeable number of parameters to a method

InterSystems FAQ rubric

ObjectScript allows you to pass any number of arguments using arrays. Do it by adding ... after the argument name.

An example is as follows. In the example statement, the argument information is set in a global variable (a variable stored in the database) so that it can be easily checked after the method is executed.

Class TEST.ARGTEST1 Extends%RegisteredObject
{
ClassMethod NewMethod1(Arg... As %StringAs %Boolean
{
 kill ^a
 merge ^a = Arg
}
}

The result of running it in the terminal is as follows.

USER>DO##class(TEST.ARGTEST1).NewMethod1(1,2,3,4,5)
USER>ZWRITE^a^a=5^a(1)=1^a(2)=2^a(3)=3^a(4)=4^a(5)=5

Comments

Joel Solon · Oct 16, 2023

Thanks Mihoko!

Also note: the argument with ... after its name doesn't have to be the only argument to the method; it must be the last argument to the method. So NewMethod1()'s signature could be:
​​​​

ClassMethod NewMethod1(a as %String, b as %String, c... as %String)
{
    kill ^a, ^b, ^c
    set ^a = a, ^b = b
    merge ^c = c
}

Running it like this:

USER>DO ##class(TEST.ARGTEST1).NewMethod1(1,2,3,4,5,6,7)
USER>ZWRITE ^a, ^b, ^c
^a=1
^b=2
^c=5
^c(1)=3
^c(2)=4
^c(3)=5
^c(4)=6
^c(5)=7
0