gpt4 book ai didi

ruby-on-rails - 指定方法参数的允许值

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

如标题 - 例如我有一个方法 DrawMe(what) 并且我想允许在 what 参数等于此值之一时运行此方法: {"house", "garden", "cat", "dog"} - 如果不是,则应停止此方法并打印错误。有什么想法吗?

最佳答案

class Draw
ALLOWED = %w[house garden cat dog]
def self.me(what)
raise ArgumentError, "Unknown drawable '#{what}'" unless ALLOWED.include?(what)
# Otherwise, carry on!
puts "I'm going to draw a #{what}!"
end
end

Draw.me('garden') #=> I'm going to draw a garden!
Draw.me('cat' ) #=> I'm going to draw a cat!
Draw.me('morals') #=> RuntimeError: Unknown drawable 'morals'

但是,请注意,大多数时候您不应该确保开发人员将正确类型的值传递到您的方法中。如果某些东西因误用而爆炸,您的方法将引发自己的错误;尝试检查和捕获这样的错误是在浪费您和计算机的时间。

编辑:如果您需要经常使用它,您可以在任何地方对其进行猴子修补:

class Object
def ensure_in( enumerable )
unless enumerable.include?( self )
raise ArgumentError, "#{self} must be one of #{enumerable}"
end
end
end

def me(what)
what.ensure_in( ALLOWED )
# Go ahead
end

关于ruby-on-rails - 指定方法参数的允许值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10323984/

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