Есть ли имя для этого синтаксиса getSomeValues ​​() [0]? - PullRequest
6 голосов
/ 29 июля 2010

В некоторых языках, если функция возвращает массив, в отличие от сохранения массива в переменной и последующего извлечения одного элемента, например:

var someValues = getSomeValues();
var firstElement = someValues[0];

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

var firstElement = getSomeValues()[0];

Как называется эта конструкция или синтаксис?У него вообще есть специальное имя?

Ответы [ 5 ]

3 голосов
/ 29 июля 2010

Вы можете использовать запись индекса массива непосредственно при вызове функции для извлечения элемента

var firstElement = getSomeValues()[0];

Что вы делаете, так это обращаетесь к индексируемому элементу массива / коллекции, возвращаемого функцией. У вас нет прямого доступа к индексу в функции.

Я бы назвал это «сцеплением» индексатора с возвращаемым значением.

2 голосов
/ 26 августа 2010

Разыменование массива

1 голос
/ 29 июля 2010

Я считаю, что у него нет особого имени. Вы просто получаете доступ к первому элементу возвращенного массива. Во многих языках нет ничего особенного в функции, которая возвращает массив.

В вашем случае вы не применяете оператор [] (индексация) к вызову функции . Вместо этого вы применяете его к возвращенному массиву. С приоритетом это выглядит так.

var firstElement = ( getSomeValues() )[0];

Так что в этом нет ничего особенного.


Однако есть еще один способ получения первого элемента, связанный с функциональным программированием. Например:

($first_value, @rest_of_list) = getSomeValues();  # Perl
let first::rest = getSomeValues () in ...         (* OCaml *)

Это сохраняет первое значение списка (технически, а не массива) в $first_value, а остальные сохраняются в переменной массива. Эта переменная массива может быть опущена, и тогда вы получите только первое значение.

($first_value) = getSomeValues();        # Perl
let first::_ = getSomeValues () in ...   (* OCaml *)

Более общей концепцией, из которой вышеприведенное является просто частным случаем, является сопоставление с образцом ( больше при сопоставлении с образцом ) В некоторых функциональных языках (например, ни в одном из приведенных выше, но в Haskell) он отличается: он действительно вычисляет только первый элемент и не делает оценку остальной части списка.

Однако в процедурном коде, который вы показали, нет ничего, что можно было бы квалифицировать как сопоставление с образцом.

1 голос
/ 29 июля 2010

Эх .. Опасный ... ??

Если в возвращаемом массиве нет элементов.

Это плохая привычка, когда он приходитчтобы иметь дело с массивами, javascript в стороне, как в комментарии.

Кроме этого идея известна как ' метод цепочки '

1 голос
/ 29 июля 2010

Я использую термин Lookup .

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