尽管有很多缺点,PHP在这一点上还是相当不错的。数组和哈希之间没有区别(也许我很天真,但这对我来说似乎显然是正确的),并且可以遍历任何一个 foreach (array/hash as $key => $value) 在Ruby中,有很多方法可以执行这种操作: array.length.times do |i| end array.each array.each_index for i in array 散列更有意义,因为我只是经常使用 hash.each do |key, value| 为什么我不能对数组执行此操作?如果我只想记住一种方法,我想我可以使用each_index(因为它使索引和值都可用),但是不得不这样做,array[index]而不是仅仅使人烦恼value。 哦,对,我忘了array.each_with_index。然而,这一次吮吸,因为它去|value, key|和hash.each去|key, value|!这不是疯了吗?
在过去的几年中,我很少使用C。今天,当我阅读此问题时,遇到了一些我不熟悉的C语法。 显然,在C99中,以下语法有效: void foo(int n) { int values[n]; //Declare a variable length array } 这似乎是一个非常有用的功能。是否曾有关于将其添加到C ++标准的讨论,如果是,为什么将其省略? 一些潜在的原因: 编译器厂商难以实施 与标准的其他部分不兼容 可以使用其他C ++结构来模拟功能 C ++标准声明数组大小必须是一个常量表达式(8.3.4.1)。 是的,我当然知道在玩具示例中可以使用std::vector<int> values(m);,但这会从堆而不是堆栈中分配内存。如果我想要像这样的多维数组: void foo(int x, int y, int z) { int values[x][y][z]; // Declare a variable length array } 该vector版本变得很笨拙: void foo(int x, int y, int z) …