这个语法有没有名称getSomeValues()[0]?

时间:2010-07-29 11:09:07

标签: arrays language-agnostic syntax terminology

在某些语言中,如果函数返回一个数组,那么与将数组存储在变量中相反,然后检索单个元素,如下所示:

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

您可以在函数调用后直接使用数组索引表示法来检索返回数组的元素,如下所示:

var firstElement = getSomeValues()[0];

这种结构或语法是什么?是否有特殊名称?

5 个答案:

答案 0 :(得分:3)

  

您可以直接在函数调用上使用数组索引表示法来检索元素

     
var firstElement = getSomeValues()[0];

您正在做的是访问函数返回的数组/集合的索引元素。您没有直接访问函数中的索引。

我称之为“链接”索引器为返回值。

答案 1 :(得分:2)

阵列解除引用

答案 2 :(得分:1)

我使用术语查找

答案 3 :(得分:1)

呃...... 危险 ...... ??

如果返回的数组中没有元素。

根据评论的说法,在处理数组,javascript时,这是一个坏习惯。

除此之外,这个想法被称为“方法链接

答案 4 :(得分:1)

我相信它没有任何特别的名字。您只是访问返回的数组的第一个元素。在许多语言中,返回数组的函数没什么特别的。

在您的情况下,您[](索引)运算符应用于函数调用。而是将它应用于返回的数组。优先级看起来像这样。

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 *)

更通用的概念,其中上面显示的只是一个特例,是模式匹配more on pattern matching)。在一些函数式语言中(没有上面所示的,但在Haskell中,例如)它是不同的:它确实只计算第一个元素,并且不会对列表的其余部分进行评估。

但是,在您展示的程序代码中,没有任何东西可以作为模式匹配。