I have troubles understanding how
show() works. I have a custom type that I would like to print something when called alone, but be silent when storing its value.
In R for example,
print.customMethod is only called when
customMethod() is called alone, not in the case of
x <- customMethod()
Is that possible?
Here’s an example:
function A(; text)
Base.show(io::IO, x::A) = println(io, x.text)
A(text="hello") # Print
a = A(text="hello") # I would like this to print nothing
I don’t think you can do this via
show, as it cannot know the context. But why don’t you just do
a = A(text="hello");
The REPL displays the value of an expression and both the expression
rhs and assignment (
lhs = rhs) has the “return value”
rhs so from the REPL’s point of view there is no difference.
Didn’t know the semi-colon trick. Thanks!
I recall seeing it in the docs when I first learned Julia (v0.4), but I could not find it again with a quick search.
A trailing semicolon on the line can be used as a flag to suppress showing the result.
with an example below it.
Thanks for pointing it out. I wonder if introducing the concept in the intro sections would be useful; new users may take some time to read up to this section.
But of course everything we more to the beginning crowds out something else, so this is a trade-off.