问题标签 [arrayaccess]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
php - PHP ArrayAccess 设置多维
编辑:我意识到文字的数量可能令人生畏。这个问题的本质:
如何以一种使设置多维值成为可能的方式实现 ArrayAccess?
我知道这已经在这里讨论过,但我似乎无法正确实现 ArrayAccess 接口。
基本上,我有一个类来处理带有数组的应用程序配置并实现了ArrayAccess
. 检索值工作正常,甚至是来自嵌套键 ( $port = $config['app']['port'];
) 的值。但是,设置值仅适用于一维数组:一旦我尝试(取消)设置一个值(例如上一个示例中的端口),我就会收到以下错误消息:
现在普遍的看法似乎是该offsetGet()
方法必须通过引用(&offsetGet()
)返回。但是,这并不能解决问题,恐怕我不知道如何正确实现该方法-为什么要使用 getter 方法来设置值?这里的 php 文档也不是很有帮助。
要直接复制它(PHP 5.4-5.6),请在下面找到示例代码:
编辑 2:正如 Ryan 指出的那样,解决方案是使用 ArrayObject 代替(它已经实现了ArrayAccess
,Countable
和IteratorAggregate
)。
要将其应用于包含数组的类,请按如下方式构造它:
我将它用于我的 Config 库,该库在 MIT 许可下在Githublibconfig
上可用。
php - 如果项目不在数组中,则无法扩展 ArrayObject::offsetGet() 函数以返回 null
最初我以为这将是小菜一碟..不适合我..
如果项目不在 ArrayObject 中,我正在尝试扩展 offsetGet() 函数以返回 null。到目前为止,我似乎无法让它在没有错误的情况下正常工作。
php -v: 5.3.29
我究竟做错了什么?以下是我的代码和错误:
我扩展的 ArrayObject 类:
我是这样称呼它的:
输出:
我究竟做错了什么??如果我调用普通的 ArrayObject 我不会得到间接修改错误。在这一点上我很困惑。
任何帮助都会很棒。我用谷歌搜索和搜索,但没有运气。
更新 - - - - - -
当试图用 ArrayAccess 做同样的事情时,我遇到了同样的问题。如何使用 ArrayAccess 解决这个问题?
我的实现:
这导致了我在 ArrayObject 中看到的相同问题。注意:\IssetArray 的重载元素的间接修改在 -- on line -- 中没有影响
php - 数组内存管理/SplFixedArray 迭代/foreach 数组复制
据我所知, foreach构造不是对数组本身进行操作,而是对它的副本进行操作。
您可以使用以下构造来避免数组的复制:
问题是当我创建固定数组时:
然后用foreach构造对其进行迭代——它是否会创建数组的副本,我仍然应该坚持使用“while/each”方法来避免它?
php - 多维数组对象
有没有办法实现具有多维数组访问的类?我想要类似的东西
c++ - 在 C++ 中将整数添加到数组中?
考虑:
这是一个来自 MIT 6.096 的简单递归函数,用于添加任意数量的整数,并且它可以工作。
我无法理解的是最后一行:
numbers+1
给定numbers[]
一个int
数组,你不应该将整数添加到int[]
常量中,它是如何工作的?
c++ - 在 C++11 及更高版本中,std::string::operator[] 是否进行边界检查?
我见过很多次std::string::operator[]
没有做任何边界检查。甚至string::at 和 string::operator[] 有什么区别?,在 2013 年问,答案说operator[]
不做任何边界检查。
我的问题是,如果我查看 [string.access] 中的标准(在本例中为草案 N3797),我们有
- 要求:
pos <= size()
。- 返回:
*(begin() + pos)
如果pos < size()
。否则,返回对charT
具有 value类型的对象的引用charT()
,其中修改对象会导致未定义的行为。- 抛出:什么都没有。
- 复杂性:恒定时间。
这使我相信operator[]
必须进行某种边界检查以确定它是否需要返回 string 的元素或 default charT
。这个假设是否正确并且operator[]
现在需要进行边界检查?
assembly - 使用 MIPS 进行数组索引
MIPS 中的数组索引有点麻烦。假设我有以下 C 代码:
假设我知道帧指针的“a”偏移量例如为 12,因此:
给我'a'的基址。现在假设数组访问索引值(在本例中为 1)存储在 $t1 中。但我不知道它是什么。如何将 7 存储在 [1] 中?我正在寻找类似的东西:
问题是最后一个操作是非法的(尽管Integer array indexing with MIPS assembly)。我怎样才能做到这一点?谢谢
php - 按索引访问对象元素
我正在使用 eBay API,它返回:
...如果我尝试像这样访问它:
...我收到此错误:
注意:未定义的属性:DTS\eBaySDK\Types\RepeatableType::$0 in ...
php - ArrayAccess 性能 php
我目前正在为一个 php 项目开发一个容器,这似乎是使用 ArrayAccess 接口进行简化的完美候选者。
我觉得这会很棒,但我看到实现接口的唯一缺点可能是性能。
从 offsetGet 或 offsetSet 方法调用方法时,性能是否会受到显着影响?使用 ArrayAccess 还有其他缺点吗?
干杯。
generics - 将成员约束添加到内联函数的参数会导致数组访问器上出现 FS0752
我一遍又一遍地阅读有关类型约束的官方 Microsoft 文档,但我不明白为什么这段代码无法编译:
错误 FS0752:运算符 'expr.[idx]' 已根据此程序点之前的信息用于不确定类型的对象。考虑添加更多类型约束
与 :
错误 FS0072:根据此程序点之前的信息查找不确定类型的对象。在这个程序点之前可能需要一个类型注释来约束对象的类型。这可以允许解析查找。
显然我不明白如何在 f# 中将成员约束与泛型一起使用。我面临的一般问题是我想通过“类矢量”类型(如 standard float[]
,甚至Vector<float>
来自DiffSharp包)创建通用函数。现在我必须为每种类型获取一个临时函数,例如(完整代码):MathNet.Numerics
DV
正如你所看到的,这个函数做的事情完全相同,但作用于不同的类型。
我想获得一个通用函数,例如(不工作的代码):
我错过了什么?
编辑:我已经完成了一半Mathnet.Numerics
因为它强制'a
(warning FS0064
) 是float
,我不希望...(DV
从DiffSharp
返回D
类型 on get_Item
,不是float
。)
将声明替换为
使编译器发出嘶哑的声音:
错误 FS0001:此处不能使用声明的类型参数“a”,因为在编译时无法解析类型参数