Discussion:
[FreeMarker-user] Forwarding freemarker vararg parameter
Albert Kam
2014-12-10 09:33:24 UTC
Permalink
Hi all,

I have a function that accepts a vararg param, which i want to pass to
another function that also has the vararg param :

<#function process extras...>
<#local result=anotherProcess(extras)>
...
</#function>

<#function anotherProcess extras...>
...
</#function>

And if i call process(1, 2, 3), then on process(), the extras is [1, 2, 3].
But when extras is passed to anotherProcess(), the extras is now [[1, 2,
3]], where i expect it to be [1, 2, 3].

Is there a way to pass the extras as 'expanded' list to anotherProcess, or
in other words, just forward the 'extras' vararg as is ?

Thank you !
--
Do not pursue the past. Do not lose yourself in the future.
The past no longer is. The future has not yet come.
Looking deeply at life as it is in the very here and now,
the practitioner dwells in stability and freedom.
(Thich Nhat Hanh)
Daniel Dekany
2014-12-10 11:29:00 UTC
Permalink
Unfortunately there's no feature for that. As a work around, you can
introduce a non-varargs variant of the "anotherProcess" function, that
expects a list but without using "..." in the declaration, and then
call that from both the "process" and "anotherProcess" functions.
Post by Albert Kam
Hi all,
I have a function that accepts a vararg param, which i want to pass
<#function process extras...>
<#local result=anotherProcess(extras)>
...
</#function>
<#function anotherProcess extras...>
...
</#function>
And if i call process(1, 2, 3), then on process(), the extras is [1, 2, 3].
But when extras is passed to anotherProcess(), the extras is now
[[1, 2, 3]], where i expect it to be [1, 2, 3].
Is there a way to pass the extras as 'expanded' list to
anotherProcess, or in other words, just forward the 'extras' vararg as is ?
Thank you !
--
Thanks,
Daniel Dekany
Loading...