通过方法清除实例变量的良好命名约定是什么。实际值存储在数组中,方法过滤数组以查找值。
以下是我已有的方法:
class Foo
def initialize
# Array of objects
@data = []
end
# Get the variable or default value
def variable
@data.select { |o| o.attribute == 'Some Value' }.first || 'Default Value'
end
# Does the variable exist
def variable?
!!@data.select { |o| o.attribute == 'Some Value' }.first
end
# Does this make sense?
def clear_variable!
# Delete the variable
end
end
或者应该是delete_variable!
?
答案 0 :(得分:3)
如果您正在创建类似的东西,最好模仿Ruby中最相似结构中使用的传统方法名称。在这种情况下,它是哈希:
class Foo
def initialize
@data = [ ]
@default = 'Default Value'
end
def [](k)
found = @data.find { |o| o.attribute == k }
found ? found.value : @default
end
def has_key(k)?
!!@data.find { |o| o.attribute == k }
end
# Does this make sense?
def delete(k)
@data.reject! { |o| o.attribute == k }
end
end
通常,其中包含!
的方法要么在出现问题时引发异常,要么对某些事物的状态进行永久性修改(例如就地修改方法),要么两者兼而有之。它不是指“重置”或“清除”。
答案 1 :(得分:0)
我没有看到variable!
在删除上下文中有意义。带有感叹号的方法的ruby惯用法是该方法对其他东西具有破坏性,是的,但在单个变量的上下文中没有意义。
e.g。 hash.merge!
,record.save!
有道理,但mymodel.field!
没有。
我建议使用remove_field
或unset_field
之类的名称,或者,如果您要清除倍数,请clear!
。