Arrays 此语法getSomeValues()[0]是否有名称?
在某些语言中,如果函数返回数组,则与将数组存储在变量中然后检索单个元素不同,如下所示:Arrays 此语法getSomeValues()[0]是否有名称?,arrays,language-agnostic,syntax,terminology,Arrays,Language Agnostic,Syntax,Terminology,在某些语言中,如果函数返回数组,则与将数组存储在变量中然后检索单个元素不同,如下所示: var someValues=getSomeValues(); var firstElement=someValues[0]; 您可以在函数调用之后直接使用数组索引表示法来检索返回数组的元素,如下所示: var firstElement=getSomeValues()[0]; 这种结构或语法称为什么?它有一个特殊的名字吗?我使用查找这个术语 可以直接在函数调用上使用数组索引表示法来检索元素 var fir
var someValues=getSomeValues();
var firstElement=someValues[0];
您可以在函数调用之后直接使用数组索引表示法来检索返回数组的元素,如下所示:
var firstElement=getSomeValues()[0];
这种结构或语法称为什么?它有一个特殊的名字吗?我使用查找这个术语 可以直接在函数调用上使用数组索引表示法来检索元素
var firstElement=getSomeValues()[0];
您所做的是访问函数返回的数组/集合的索引元素。您不能直接访问函数中的索引
我称之为“链接”返回值的索引器。Eh危险 如果返回的数组中没有元素 在处理数组时,这是一个坏习惯,根据评论,除了javascript之外
除此之外,这个想法被称为“方法链接”我相信它没有任何特殊的名称。您正在访问返回的数组的第一个元素。在许多语言中,返回数组的函数没有什么特殊之处 在您的情况下,您没有将
[]
(索引)运算符应用于函数调用。而是将其应用于返回的数组。优先顺序是这样的
var firstElement=(getSomeValues())[0];
所以这里面没什么特别的
然而,还有另一种获取第一个元素的模式,与函数式编程相关。例如:
($first_value,@rest_of_list)=getSomeValues();#Perl
let first::rest=getSomeValues()在。。。(*OCaml*)
这将列表的第一个值(从技术上讲,不是数组的)保存到$first\u value
中,其余值存储在数组变量中。可以省略该数组变量,然后只获得第一个值
($first_value)=getSomeValues();#Perl
let first::=getSomeValues()在。。。(*OCaml*)
更通用的概念是模式匹配,上面显示的只是一个特例。在一些函数式语言中(上面没有显示任何一种,但在Haskell中,例如),它是不同的:它实际上只计算第一个元素,而不计算列表的其余部分
然而,在您展示的过程代码中,没有任何东西可以被称为模式匹配。数组解引用是的,我是这么说的。我应该更清楚地回答我的问题。@BoltClock-所以如果我理解正确,我的答案不是你想要的?@ChaosPandion:我自己也不确定,因为我问了,但如果你理解是这样的,那就这样吧。@BoltClock-对不起,我早上有点慢。啊,我在跟谁开玩笑?我总是很慢@作为记录,对你的答案的投票实际上是我的:)好的,但要明确的是,在JavaScript这样的语言中,这并不危险。当然,除非您尝试将
未定义的
返回值作为函数调用。感谢您的详细解释和函数编程示例+1sequence.First()
会是等效的.NET调用吗?它是@Gordon的一个副本:仔细想想,我不认为它真的是一个副本,因为我在问它的调用是什么,而这个问题是问它为什么在PHP中不起作用。但是哦,好吧,至少我现在知道它的名字了。@BoltClock是真的,但是你可以通过阅读另一个问题来得到你的答案,所以虽然它在语义上不是重复的,但它包含了足够的信息来回答你的问题。@BoltClock很抱歉在这里打破了你的泡泡,但是:。不是第一个;)