Folks:
This is a simple newbe question on how to change the value of an
attribute and I have tried to do it in several ways without success.
Here is the code:
###--- Main Class ---###
class Employee
attr_writer :name
attr_reader :name
def name
@name
end
def initialize(name)
puts "Creating object...."
@name=name
puts "Object created!"
end
end
def method_to_call( parameter1 )
objectEmployee = Employee.new( parameter1 )
puts " Name:=" + objectEmployee.name
puts
yield( objectEmployee.name )
puts
puts " Name:=" + objectEmployee.name
puts
end
method_to_call("Carlos") do |paramA|
paramA = paramA + " Aquiles"
puts " Trying to modify parameter!....!"
puts " => paramA := " + paramA
end
···
==================
The output is:
Creating object....
Object created!
Name:=Carlos
Trying to modify parameter!....!
=> paramA := Carlos Aquiles
Name:=Carlos
So the question is how can I pass an attribute or Object to a method and
that inside it I can change the value of the attribute or Object, so
after leaving the method the attribute or object gets updated.
Any help will be very appreciated!
--
Posted via http://www.ruby-forum.com/.
Carlos Caof2005 wrote:
Folks:
This is a simple newbe question on how to change the value of an
attribute and I have tried to do it in several ways without success.
Here is the code:
###--- Main Class ---###
class Employee
attr_writer :name
attr_reader :name
def name
@name
end
def initialize(name)
puts "Creating object...."
@name=name
puts "Object created!"
end
end
def method_to_call( parameter1 )
objectEmployee = Employee.new( parameter1 )
puts " Name:=" + objectEmployee.name
puts
yield( objectEmployee.name )
puts
puts " Name:=" + objectEmployee.name
puts
end
method_to_call("Carlos") do |paramA|
paramA = paramA + " Aquiles"
puts " Trying to modify parameter!....!"
puts " => paramA := " + paramA
end
The output is:
Creating object....
Object created!
Name:=Carlos
Trying to modify parameter!....!
=> paramA := Carlos Aquiles
Name:=Carlos
So the question is how can I pass an attribute or Object to a method and
that inside it I can change the value of the attribute or Object, so
after leaving the method the attribute or object gets updated.
You need to actually call a method on the object which changes it. What you're doing when you say:
paramA = paramA + " Aquiles"
is actually this:
paramA = paramA.+(" Aquiles")
The convention is that the '+' method returns a new object that is the result of the '+' operation, so this new object then replaces the previous paramA when you do the assignment. What you actually want in this case is:
paramA << " Aquiles"
The '<<' method actually alters the contents of the string rather than allocating a new one.
···
--
Alex
###--- Main Class ---###
class Employee
attr_accessor :name
def initialize(name)
puts "Creating object...."
@name=name
puts "Object created!"
end
end
def method_to_call( parameter1 )
objectEmployee = Employee.new( parameter1 )
puts " Name:=" + objectEmployee.name
puts
yield( objectEmployee.name )
puts
puts " Name:=" + objectEmployee.name
puts
end
method_to_call("Carlos") do |paramA|
paramA << " Aquiles"
puts " Trying to modify parameter!....!"
puts " => paramA := " + paramA
end
···
--
Posted via http://www.ruby-forum.com/.