Efficient access of instance variables


#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
<< removed_email_address@domain.invalid >> (email)
<< TomCloyd.com >> (website)
<< sleightmind.wordpress.com >> (mental health weblog)

#2

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
<< removed_email_address@domain.invalid >> (email)
<< TomCloyd.com >> (website)
<< sleightmind.wordpress.com >> (mental health weblog)

#3

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