Ответ 1
Макросы не являются функциями; они предназначены для вывода вывода. Однако, если вы не против потерять тип и получить результат как текст...
#set( $book_list_link = "#getBookListLink( $readingTrackerResult )" )
Я пытаюсь выяснить, как вернуть значение из макрокоманды скорости и назначить его для varaible
моя макрофункция выглядит примерно так. его общий доступ к общим файлам макросов
#macro(getBookListLink, $readingTrackerResult)
$readingTrackerResult.getBookListLink()
#end
Мне нужно присвоить результат этого макроса переменной в другом файле шаблона скорости
Я пробовал что-то вроде этого
#set($book_list_link = #getBookListLink( $readingTrackerResult ))
но не работает. Я попытался С#, $и ничего перед функцией getBookListLink. но ничего не получилось. Не могу я вернуться из макроса? что-то не так с моим макросом?
Но, так, если я вызываю #getBookListLink ($ readTrackerResult) отдельно в html файле. он работает, и я могу напечатать результат в пользовательском интерфейсе. Но не может назначить переменную.
Макросы не являются функциями; они предназначены для вывода вывода. Однако, если вы не против потерять тип и получить результат как текст...
#set( $book_list_link = "#getBookListLink( $readingTrackerResult )" )
Чтобы избавиться от пробелов и пустых строк, используйте многострочные комментарии (#* comment *#
):
#macro( myMacro $param )#*
*#the_return_value#*
*##end
Вместо того, чтобы жить со строковыми ограничениями для "возвращаемых значений", предпочтительно переменная результата, определяемая извне, может передаваться "по ссылке", например:
#macro(getBookListLink $inTrackerResult $outBookListLink)
#if ($outBookListLink)
#set ($outBookListLink = $inTrackerResult.getBookListLink())
#end
#end
#set ($myLink = "")
#getBookListLink($myTrackerResult $myLink)
myBookListLink = "$myLink"<br/>
Параметр макроса может быть списком объектов. Вызываемый макрос может извлекать каждый объект из списка, манипулировать им, а затем вызывающий видит изменения.
#macro(call $something)
#set($swallowOutput = $something)
#end
#macro(doSomething $out)
#set($list=$out.get(0))
#call($list.add("hallo-1")
#call($list.add("hallo-2")
#end
#macro(doMoreComplexStuff)
#set($myList=[])
#doSomething([$myList])
MyList now has $myList.size()) elements: $myList
#end
Или просто напишите все на одну строку:
#macro( myMacro $param ) the_return_value #end