I've looked all over, but I can't figure out how to suppress the printing of evaluated expressions in irb. Ordinarily, this is no problem: irb(main):001:0> a = [] => [] But what if the thing returned is huge? irb(main):001:0> b = function_returning_something_huge <disaster> In Python, the interpreter suppresses the printing of the expression if there is assignment, but not otherwise: >>> a = [] >>> a [] >>> b = function_returning_something_huge() >>> b <disaster, but I asked for it!> How do I get the same or similar behavior in irb? Thanks in advance, Michael
on 21.03.2006 00:13
on 21.03.2006 01:25
On Mar 20, 2006, at 3:13 PM, Michael Hartl wrote: > <disaster> > In irb, enter `conf.return_format = ""` That'll turn off all printing of evaluations in irb, which means you have to use `puts` if you want to see any results, but it'll avoid your disasters. You can add 2 methods to your .irbrc if you like, one that clears the formatting with the line I gave, and one that sets it back to normal (the default is "=> %s\n"), so that you can switch back and forth between the two modes easily. There may be a better solution, but this is all I came up with. Still, I hope it helps. Tim
on 21.03.2006 01:37
On Mar 20, 2006, at 4:25 PM, Timothy Bennett wrote: > There may be a better solution, but this is all I came up with. > There is another solution, that of course I realize after I send out the message. You can set conf.return_format to "=> %0.100s\n", where the number after the . (in this case 100), is the maximum number of characters you want printed to the screen. Tim
on 21.03.2006 02:11
Hello everyone,
I'm trying to keep a thread alive after exiting a method. The pseudo-
code is as follows:
class A
def start
@mainThread = Thread.new {
oneThread = Thread.new {
# do some stuff
}
twoThread = Thread.new {
# do some other stuff
}
oneThread.join
twoThread.join
}
end
end
aObject = A.new
aObject.start
The problem is that since there is no :join call on @mainThread, it
is killed (and hence oneThread, and twoThread as well) once control
ends in :start. This is perfectly valid, of course, but I would like
@mainThread to stay alive after control in :start ends. Is there any
way to do this? Thanks
Nate
on 21.03.2006 02:20
On 3/20/06, Michael Hartl <mhartl@gmail.com> wrote:
> <disaster>
If you want to suppress printing for just one line, try appending ';0'
to the end of the command:
irb(main):001:0> b = function_returning_something_huge;0
=> 0
on 21.03.2006 02:51
Nate Smith wrote: > # do some stuff > aObject = A.new > Is you program exiting after aObject.start? Then maybe you want to do @mainThread.join at that point? The @mainThread should still be alive, until the program exits, unless it has suffered an exception. Do you have Thread.abort_on_exception = true?
on 28.03.2006 01:14
Thanks for your help. Tim's suggestions are nice, but I'd prefer to be able to make the print/no-print decision on the fly, on a per-statement basis. On these grounds, Caleb's suggestion meets my needs best. I had actually tried using a semicolon, but of course irb then just waits for the next statement. Putting a 0 (or anything else) is a bit of a kludge compared to the Python interpreter's convention, but it gets the job done. Thanks, Michael