8
正如#4933中所述
正如#4933中所述
我想知道我们是否可以将其称为entries而不是getAll,同时仍返回一个对象。这仍然不是一个迭代器吗?
entry() 返回迭代器对象(具有 next() 方法的对象);普通对象没有迭代器实现
编辑:哎呀,我错误地编辑了@ry 的评论
getAll()
听起来很奇怪。
其他一些可能性如下:
forEach
方法使其与 Map 保持一致。entries
方法返回一个Array<[string, string]>
- 这是一个可迭代对象toObject()
执行现在正在做的事情的方法getAll
。这些都不是特别好...
最好的办法是entries()
- 但要把它变成对象,还需要把它包装起来Object.fromEntries()
const env = Object.fromEntries(Deno.env.entries());
vs
const env = Deno.env.getAll();
仅供参考;在 Rust 中:
let env = env::vars(); (returns interator)
let envVar = env::var("my_var");
env::set_var("my_var", "my_value");
env::remove_var("my_car");
我同意条目也是理想的。如果我们toObject()
现在就这样做,并为添加 TODO会怎么样entries()
?
entries()
实施基本上不会是这样的吗Object.entries(Deno.env.toObject())
?
经过进一步讨论,我们决定使用get()
/ set()
/ toObject()
。@SyrupThinker 你能更新 PR 吗?
Deno.env
与简单的对象相比,类似 Map 的接口有什么好处?
console.log(Deno.env.SOMETHING);
Deno.env.SOMETHING_ELSE = "BLAH";
@jakajancar 我们希望让它看起来不像是在更新某个对象 - 而是调用具有副作用的函数。特别是,在 Windows 中,环境变量不区分大小写。
啊,Windows 的情况就足够了。如果属性以意想不到的方式发生变化,那确实看起来很奇怪。
感谢您的解释!