Передача массивов как параметры в ударе

Новые веб-проекты должны рассмотреть возможность не использовать Java.

Я использую Java для веб-разработки уже более 10 лет. Сначала это был шаг в правильном направлении по сравнению с доступными альтернативами. Теперь есть лучшие альтернативы, чем Java.

Это на самом деле только частный случай подхода «волшебный молоток» к решению проблем, но он действительно болезненный.

181
задан tripleee 8 February 2015 в 23:47
поделиться

2 ответа

В ответе DevSolar есть один момент, который я не понимаю (возможно, у него есть конкретная причина для этого, но я не могу придумать ни одной): он устанавливает массив из элемента позиционных параметров по элементу, итеративно.

Более простой подход будет

called_function()
{
  ...
  # do everything like shown by DevSolar
  ...

  # now get a copy of the positional parameters
  local_array=("$@")
  ...
}
5
ответ дан 23 November 2019 в 06:08
поделиться

Примечание: Это довольно грубое решение, которое я опубликовал сам, не найдя здесь ответа на Stack Overflow. Он позволяет передавать только один массив, и он является последним элементом списка параметров. Фактически, он передает вовсе не массив, а список его элементов, которые повторно собираются в массив с помощью call_function (), но у меня это сработало. Несколько позже Кен опубликовал свое решение, но я оставил свое здесь для «исторической» справки.

calling_function()
{
    variable="a"
    array=( "x", "y", "z" )
    called_function "${variable}" "${array[@]}"
}

called_function()
{
    local_variable="${1}"
    shift
    local_array=("${@}")
}

Улучшено TheBonsai, спасибо.

83
ответ дан 23 November 2019 в 06:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: