[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

user defined instance variables

John Maclean

1/5/2006 11:35:00 PM

Hey Chaps,
So far so good. I've a menu as shown below. So far by following the "pick axe" I've been able to "hard code" all of my instance variables. I'd like a user to enter his/her details and let his entry specify that variable? Make sense?

#!/usr/bin/ruby
# Thu Jan 5 20:41:45 GMT 2006
# defining a new class for inspectors
class Inpsector
def welcome_inspector
puts "Welcome to the inspector screen"
puts "~~~~~~~ ~~ ~~~ ~~~~~~~~~ ~~~~~~"
print "0:- Inspectors, ready to enter your details?\nq:- quit!\n"
# all we want to do here is collect the inspector's details
end

def initialize(fname, sname, company, dept, team, empno, mobileno)
# these are the instance variables
@fname = fname
@sname = sname
@company = company
@dept = dept
@team = team
@empno = empno
@mobileno = mobileno
end

def insp_choice
print "enter your choice (0,q) : "
ip = $stdin.gets

if ip.chomp! =~ /^[0q]/
case ip
when "0"
print "Entering details capturing session\n"
when "q"
print "about to quit!\n"
end
else
print "poor choice!\n"
end
end

def to_s
"Inpsector: #@fname #@sname #@company, #@dept, #@team, #@empno, #@mobileno\n"
end
end

# todo:- replace this "hard-coded" way of enteringinstance variables
# with those that the user has entered
inspector = Inpsector.new("John", "Mac", "t4m", "insp", "bcv", "666", "07666") #<--------- here
inspector.inspect
inspector.welcome_inspector
inspector.insp_choice
puts inspector



--
John Maclean
MSc (DIC)
07739 171 531



2 Answers

dblack

1/6/2006 1:13:00 AM

0

James Gray

1/6/2006 1:57:00 AM

0

On Jan 5, 2006, at 5:35 PM, John Maclean wrote:

> Hey Chaps,
> So far so good. I've a menu as shown below. So far by following the
> "pick axe" I've been able to "hard code" all of my instance
> variables. I'd like a user to enter his/her details and let his
> entry specify that variable? Make sense?

Some idea, in code:

class Inspector
WELCOME = <<-END_WELCOME.gsub(/^\s+/, "").chomp
Welcome to the inspector screen
~~~~~~~ ~~ ~~~ ~~~~~~~~~ ~~~~~~
0:- Inspectors, ready to enter your details?
q:- quit!
enter your choice (0,q) :
END_WELCOME
DETAILS = %w{fname sname company dept team empno mobileno}

def initialize
DETAILS.each { |var| instance_variable_set("@#{var}", nil) }
end

def enter?( input )
case input
when "0"
true
else
false
end
end

def build
DETAILS.each do |var|
answer = yield var
instance_variable_set("@#{var}", answer) unless answer.empty?
end
end
end

if __FILE__ == $0
inspector = Inspector.new
p inspector

print Inspector::WELCOME
if inspector.enter? $stdin.gets.to_s.chomp
puts "Entering details capturing session"
inspector.build do |var|
print "#{var}: "
$stdin.gets.to_s.chomp
end
else
puts "about to quit!"
end

p inspector
end

Hopefully that gets you going.

James Edward Gray II