Actions
Feature #11361
openproposal for easy method to nil-guard for generated variable name.
Status:
Open
Assignee:
-
Target version:
-
Description
It's easy to 'nil-guard' for normal variable.
def user
@user ||= User.find(1)
end
but it's not simple for generated variable name.
def user(id)
variable_name = "@user_#{id}"
instance_variable_set(variable_name, User.find(id)) unless instance_variable_defined?(variable_name)
instance_variable_get(variable_name)
end
I want to write it like this.
def user(id)
instance_variable_get_or_set("@user_#{id}") { User.find(1) }
end
it can be implemented by this code.
def instance_variable_get_or_set(variable_name, &block)
instance_variable_set(variable_name, block.call) unless instance_variable_defined?(variable_name)
instance_variable_get(variable_name)
end
Actions
Like0
Like0Like0