The “first result only” handling applies to all uses of “filtered transclusion” when used as the value of a widget parameter… for ANY widget, not just the $let
widget.
I suppose it could have been implemented to return multiple results (space-separated with doubled square brackets around any result that contains spaces), and then if you only wanted the first result you could add +[first[]]
to the end of the filtered transclusion syntax.
Conversely, using the current “first result only” handling, if you DO want to use the "full filter result like for $set
", you can add +[format:titlelist[]join[ ]]
to the end of the filtered transclusion syntax, which would then give the same result as you get with the <$set name="..." filter="..." />
syntax.
Note that the format:titlelist[]
filter operator was only added some time after the filtered transclusion parameter syntax… in part to address this very issue.
One possible explanation for this design choice was perhaps it was thought that parameters that expect a single value are the significantly more common use-case, so it was “cleaner” to return just the first result, rather than always having to remember to add +[first[]]
all the time.
-e