Разрыв строки макроса Velocity

Учитывая следующий макрос:

#macro(sample $c1 $c2 $c3 $c4)
    ## do something with $c1..4
#end

Моя проблема в том, что ввод #sample очень длинный, и все было бы более читабельно, если бы я вызывал его следующим образом.

#sample(  $c1
          $c2
          $c3
          $c4 )

Но это дает только ошибку пробела. Учитывая, что единственная причина, по которой я использую этот макрос, — это читабельность, я хотел бы, чтобы это как-то работало. Есть идеи?

Ваше здоровье!


person Tom    schedule 16.12.2013    source источник
comment
Для тех, кто случайно наткнулся на этот пост: после нескольких долгих гугловских сессий и множества проб и неудач может показаться, что для этого нет очевидного решения. Ближайший ответ, который я нашел, - это тот, который предоставил Seika85 ниже, но для моей ситуации я чувствую, что он слишком сложен. Если ваша ситуация требует большого количества аргументов, то, возможно, предложение Сейки является лучшей альтернативой, но для небольшого количества входных данных, таких как мой, поиск способа изменить входные данные в более короткий формат, вероятно, будет лучшей альтернативой.   -  person Tom    schedule 23.12.2013


Ответы (1)


Вы можете сделать что-то вроде этого:

#set( $options = [ "one",
                   "two",
                   "three",
                   "four" ] )
#macro(sample $options)
   #foreach( $opt in $options )
       ## do something with each $opt
   #end
#end

Другое дело, что пытаются использовать комментарии (если я правильно помню). Может быть, что-то вроде этого:

#sample(  $c1 #*
       *# $c2 #*
       *# $c3 #*
       *# $c4 )

Насколько я помню, разрывы строк там, где всегда были ошибки, и перенос их в комментарии решит эти проблемы.

person Seika85    schedule 18.12.2013
comment
К сожалению нет. Я пробовал комментировать, но это не сработало, все еще заявляя об ошибке пробела. Одним из хороших решений было бы использование массивов, но это сложнее, чем хотелось бы. Напомним, что моя мотивация состоит в том, чтобы все было просто и легко читалось. - person Tom; 23.12.2013