2016-08-22 59 views
1

any听起来更加原生,some种暗示与谓词事项相匹配的项目数量。为什么不将Array.prototype.some命名为.any?

为什么标准名称的方法一些而不是任何?

+1

只是一个猜测,但是一些流行的库可能已经对'Array.prototype'使用了'any'方法。 –

+0

IIRC是以最小化与现有网站冲突的方式命名的多种方法之一。 – zzzzBov

+0

@zzzzBov所以现有的图书馆采取了最好的名称和标准必须选择一个奇怪的名字..它是如此伤心...... – Gqqnbig

回答

4

这是因为prototype.js,其中添加了Iterable.any方法的数组原型。这种做法现在出于很好的理由而被忽视,但原型是最早的图书馆之一,而且IIRC也是遵循轨道引导(rails monkey-patches Ruby的内置类)。

TC-39通常会向后弯曲以避免任何破损,AFAIK标准做法是抓取网络并查看使用范围有多广泛,此时做出决定,几乎总是选择另一个名称。

2

我不知道这个名字的历史。然而,声明

array.some(func) 

将数学上被翻译成

∃ i ∈ {0, …, length(array)-1} : func(array_i, i, array) 

这是即使在spec提到:

some行为就像数学的 “存在” 量词。

而英语中的∃ quantifier也被称为“for some”。

所以,“一些”似乎对我很好。

+2

这是一个很好的观点:与存在量词的关系。 –

+0

从这个意义上说,存在对我来说会更好。 – Gqqnbig

+0

@LoveRight但'array.exists(func)'可能与'array.includes(func)'混淆。我想'array.existsItemSuchThat(func)'可以工作,但它太长了。 – Oriol

相关问题