Звездочки перед именами массивов в Groovy? - PullRequest
7 голосов
/ 09 января 2012

Я немного новичок в Groovy, так что я уверен, что это одна из тех чрезвычайно очевидных вещей ... но поиск через Google трудно.

На других языках звездочки, как правило, представляют указатели. Однако в этом фрагменте кода Groovy:

byte[] combineArrays(foo, bar, int start) {
  [*foo[0..<start], *bar, *foo[start..<foo.size()]]
}

Я могу только представить, что это не так. Я имею в виду, указатели? Groovy?

Я предполагаю, что этот код намеревается передать членов от foo и bar, в отличие от многомерного массива. Так что именно означают звездочки?

Большое спасибо за вашу помощь.

1 Ответ

10 голосов
/ 09 января 2012

При таком использовании оператор * распространяет список или массив в список аргументов.Это не помогло, не так ли?Как насчет примера вместо этого?Скажем, у нас есть эта функция:

def add(Number a, Number b) {
  return a + b
}

И этот список

def args = [1, 2]

Мы не должны этого делать:

add(args)

, потому что функция ожидает два числовых аргумента,Но мы можем сделать это:

add(*args)

, потому что оператор * преобразует список из 2 элементов в 2 аргумента.Вы можете использовать этот оператор со списками и массивами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...