In the general case, an instance variable is local and stored inside an object instance, while a local variable is only local and stored inside a function / object / block area. For instance:
class User
def name
@name
end
def name= name
@name = name
end
end
def greet user
name = user.name || 'John'
p "Hi, my name is #{name}"
end
user = User.new
greet user
=> 'Hi, my name is John'
name
=> NameError: undefined local variable or method 'name' for main:Object
user.name = "Mike"
greet user
=> 'Hi, my name is Mike'
@name
=> nil
name , . , name = user.name || 'John', . name, NameError, .
@name User. , nil. local instance, nil, , .
, . @name , user.name , @name. name greet, , p "Hi, my name is #{name}", name, , .