因此,从黑匣子的角度来看,数组和函数背后的想法非常相似。传入输入值并检索输出值。那么,保持数组语法和函数语法相同更好,还是差异更好呢?
例如:
打印阵列 印刷漏斗(0)
对比
打印数组(0) 印刷漏斗(0)
发布于 2009-04-08 13:57:28
Ruby做了一些合并--方法使用()
,但是数组、散列和lambda表达式( ruby与函数最近的东西)都可以使用[]
。与ducktyping一起,这意味着您可以传递一个对象,并使用[]
传递它的值,而不管它是预先计算的(数组)、每次计算( lambda表达式),还是根据需要计算和缓存(可以用散列来完成)。
另一个将两者混为一谈的例子是Haskell。正如我所记得的,它没有内置在语言中的数组语法--访问数组索引是一个函数调用,可以像任何其他函数一样使用。
实际上,我更喜欢合并-它允许更容易的灵活性(我喜欢)。知道自己是在优化速度还是优化内存(就像David说的那样)是很好的,但我愿意自己承担这个责任,而不是把它留给语言内置的提示。
发布于 2009-04-08 13:48:53
从技术上讲,它们都是映射,但在大多数程序员看来有一个不同:数组存储它们的值,而函数则计算它们的值。换句话说,(简单地)数组是为了速度而优化的,函数是为内存优化的。我认为这是一个很好的区别。
发布于 2009-04-08 14:00:06
嗯,我认为传统上,这来自C/Algol语法,其中[]直接转换为内存偏移量,而()则是一个更复杂的过程。
在一些较新的语言中,[]是原始数据结构的通用索引,例如,Js中的散列是通过以下方式访问的:
hash["Hello"];
array[0];
我认为保持与“参数”语法不同的“索引”语法是有用的。
https://stackoverflow.com/questions/732002
复制相似问题