问题标签 [autovivification]
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.
ruby - 获取嵌套元素的频率,并保留关系
我有一个数组
商店物品
属于城市对象
- 属于地府对象
我想得到一个按县列出的哈希,然后是城市,然后是频率......
我想出了这个,但感觉真的不像红宝石..
必须有一种干燥的方法来做到这一点!
ruby - 在 ruby 中,为什么数组追加在默认值为空数组的哈希上失败?
下面的代码示例。对哈希值调用 append 会正确返回,但哈希本身的行为并不像我预期的那样。
javascript - 自动生存和 Javascript
自动生存是否只与“取消引用”未定义的结构有关,因为在 JavaScript 中,如果您指定一个不存在的索引或属性,它不会动态创建它吗?但这不是自动生存,因为您必须首先将底层结构声明为对象或数组?
ruby - Ruby 哈希初始化器
哈希初始化器:
我看到有人在另一个问题上发布了这些,但我不明白为什么动物在第一种情况下显得空白。如果我输入
我得到了适当的数组。
perl - 在 Perl 中,如何对二维数组的元素使用“定义”函数?
我正在尝试使用Perl中定义的函数来检查是否定义了元素。
代码 :
输出
在使用定义函数之前, 的第一个维度中有两个元素@myarray
。使用定义函数后,元素数量增加到 3 个。
如何在不添加新元素的情况下使用定义的功能?
python - 在 python 中,下面的 AutoVivification 类是如何工作的?
在寻找使用嵌套字典的方法时,我发现了nosklo发布的以下代码,我想解释一下。
测试:
输出:
我是一个相当新手的程序员。我在业余时间学到了大部分我所知道的东西,我唯一的正式培训是在高中时的 Turbo Pascal。我理解并且能够以简单的方式使用类,例如使用__init__
、类方法,以及使用foo.man = 'choo'
.
我不知道方括号系列是如何通过类正确定向的(我认为它们是以__getitem__
某种方式调用的),并且不明白它们是如何被如此简洁地处理而不必单独调用该方法三次的。
我的印象是(dict)
类声明中的__init__
.
我以前用过try: except:
,不过,还是用非常简单的方式。在我看来try
,当它运行时,它正在调用一系列函数__getitem__
。我收集到,如果当前级别的字典存在,则尝试将通过并转到下一个字典。我认为except
,当有 a 时运行,KeyError
但我以前从未见过self
这样使用过。 Self
被当作字典对待,而我认为self
是class AutoVivification
……的一个实例,两者兼而有之吗?我从来没有像这样连续分配两次,foo = man = choo
但怀疑它value
指向self[item]
whileself[item]
指向的结果type(self)
。但type(self)
会返回如下内容:<class '__main__.AutoVivification'>
不会吗?我不知道末尾多余的圆括号是做什么用的。因为我不知道函数是如何被调用的,所以我不明白在哪里value
返回。
抱歉有这些问题!这里面有很多我不明白的地方,而且我不知道在哪里可以找到它,除非我花了几个小时阅读文档,而在这些文档中我保留的很少。这段代码看起来可以满足我的目的,但我想在使用它之前理解它。
如果您想知道我在使用嵌套字典的程序中要做什么:我正在尝试以天文比例保存地图数据。虽然我无法创建嵌套 4 次的 10^6 项的字典/列表(即 10^24 项!),但空间大部分是空的,因此我可以将空值完全排除在外,只有在有东西时才分配。困扰我的是处理字典的有效方法。
perl - 如何在 Perl 中进行非生化
假设我有一个 Perl 脚本:
但是我的输出会自动创建“c”,这是我不想要的。
此外,我的发行版不允许我禁用自动生存。有没有办法制作一个检查每个级别的子程序?
javascript - 是否有支持 Javascript 对象自动生存的库?
无论如何,无论是本机还是通过库,都可以在 Javascript 对象上使用 autovivification 吗?
IE,假设foo
是一个没有属性的对象,能够做foo.bar.baz = 5
而不是需要foo.bar = {}; foo.bar.baz = 5
.
perl - autovivification 创建的哈希有额外的键
这就是我所拥有的
这是我得到的输出
我的问题是为什么要创建这些附加键,它们本质上是先前创建的键-> 值对的值。
这是我所期望的
有人可以纠正我明显的错误吗?
perl - Perl 使用 TIEHASH 自动存活
这是要处理的绑定哈希的预期和直观行为$h{a}++
:
这也有望处理嵌套 case $h{a}{b}++
,但是我无法弄清楚为什么,最重要的是,如何覆盖此行为:
我在测试Tie::CHI时偶然发现了这一点。它显然能够存储复杂的对象:
Perl 能够从深度嵌套的结构中检索任何数据,此外:
但是在嵌套结构中存储在任何 tie() 的哈希中都不起作用:
可以修补 Tie::CHI 以使用更多 DWIMmery 处理这种情况吗?如果没有,有什么替代方案?