tbcox23
1
I’m having my first extended day working with classes - trying to
convert some functioning methods in my current project to classes.
I’m looking for a way to call a class instance and get back a couple of
its instance variables with an efficiency equivalent to this method
call:
@log, @logging_now = manage_log( ‘open’ ) # the method returns both vars
So, I seem to have write all this -
manlog = ManageLog.new
manlog.open
log, logging_now = manlog.log, manlog.logging_now
Before I resign myself, I want to ask if I’m missing something here. Is
there a way I can do any of this more tersely?
Thanks for any help,
Tom
–
Tom C., MS MA, LMHC - Private practice Psychotherapist
Bellingham, Washington, U.S.A: (360) 920-1226
<< [email protected] >> (email)
<< TomCloyd.com >> (website)
<< sleightmind.wordpress.com >> (mental health weblog)
Tom C. wrote:
Scratch this call for help. I getting it figure out. ~t.
–
Tom C., MS MA, LMHC - Private practice Psychotherapist
Bellingham, Washington, U.S.A: (360) 920-1226
<< [email protected] >> (email)
<< TomCloyd.com >> (website)
<< sleightmind.wordpress.com >> (mental health weblog)
Hi Tom,
Am Mittwoch, 21. Jan 2009, 09:49:04 +0900 schrieb Tom C.:
Tom C. wrote:
manlog = ManageLog.new
manlog.open
log, logging_now = manlog.log, manlog.logging_now
Scratch this call for help. I getting it figure out. ~t.
Anyway I’m egged to advertise my private philosophy.
class ManageLog
class <<self
private :new
def open
o = new
o.open
yield o
end
end
def logged
yield $stdout, $stderr
end
end
ManageLog.open |m| do
m.logged do |log,log_now|
…
end
end
Or maybe
class ManageLog
def log_my_pipes stdout, stderr
$stdout.reopen stdout
$stderr.reopen stderr
yield
ensure
$stdout.reopen STDOUT
$stderr.reopen STDERR
end
end
This is, of course, untested and just a suggestion.
Bertram