gpt4 book ai didi

ruby - 访问 Thor 选项哈希

转载 作者:数据小太阳 更新时间:2023-10-29 07:53:53 29 4
gpt4 key购买 nike

我想将一个值合并到一个 Thor option hash 中.

如果我只是使用合并,我会得到一个错误,HashWithIndifferentAccess

我已经阅读了文档,但我很难理解如何让它工作。我想我希望这个问题能帮助我找到关于如何将值合并到这种哈希中的问题的答案,并帮助我理解如何阅读文档。

p options.inspect 
#=> "{\"ruby\"=>\"/Users/work/.rbenv/versions/1.9.2-p290/bin/ruby\"}"
p options.merge!(:a => true)
#=> hash_with_indifferent_access.rb:26:in `[]=': can't modify frozen hash (RuntimeError)

最佳答案

哈希被卡住:

"Prevents further modifications to obj. A RuntimeError will be raised if modification is attempted. There is no way to unfreeze a frozen object."

您可以将 options 复制到一个新的散列(将被解冻)并修改它。

new_options = options.dup
options = new_options
options.merge!(:a => "this will work now")

或者如果你想让它更简短:

options=options.dup
options.merge!(:a => "this will work now")

Thor 库默认返回卡住的哈希值,因此另一种选择是修改库以返回未卡住的哈希值,但我认为第一个解决方案已经足够好了。

下面是 Thor 解析函数的源代码链接,您会注意到它在实际返回之前卡住了“分配”返回哈希(转到页面底部,在 (Object) parse(args),点击'查看源代码'。卡住在源代码片段的第83行。)

http://rubydoc.info/github/wycats/thor/master/Thor/Options

关于ruby - 访问 Thor 选项哈希,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9317352/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com