gpt4 book ai didi

ruby-on-rails - 检查是否传递了 ruby​​ 关键字参数(RUBY)

转载 作者:太空宇宙 更新时间:2023-11-03 17:19:54 24 4
gpt4 key购买 nike

我想测试是否传递了关键字参数。

def test(:name, :zip)
if name.key.present?
#then do stuff
end
end

我不想只检查 nil,但因为如果 nil 是故意传递的

test(name: nil, zip: 10011),我希望方法以不同方式处理散列,然后如果关键字对从未传递。test(zip: 10011)

如何检查关键字/值对是否被传递到方法中?

最佳答案

您的代码不起作用,关键字参数定义为 key: defaultvalue

您可以定义一个“不可能的”值作为默认值并检查它。“不可能”表示永远不会用作参数的值。

def test(name: :just_some_stupd_content, zip: nil)
if name == :just_some_stupd_content
puts 'Name is not set'
else
puts 'Name is set'
#then do stuff
end
end

test(name: nil, zip: 10011)
test(zip: 10011)

当你调用它时,这个逻辑将不起作用

test(name: :just_some_stupd_content, zip: 10011)

所以它不是防弹的,但我认为这是一种可用的方式。

ruby >= 2.1 的解决方案

Ruby 2.1 引入了必需的关键字参数,这些参数用尾随冒号定义:

def test(name:, zip: nil)
puts 'Name is set'
end

test(name: nil, zip: 10011)
test(zip: 10011) #raises missing keyword: name (ArgumentError)

如果取决于您的需要,如果此解决方案更适合。

关于ruby-on-rails - 检查是否传递了 ruby​​ 关键字参数(RUBY),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57929071/

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