4
正如#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 的情况就足够了。如果属性以意想不到的方式发生变化,那确实看起来很奇怪。
感谢您的解释!