I need to write the following script:
# typeof
# 値の型を得る
function print_typeof(x)
print("表現「")
show(x)
println("」の値の型は「", typeof(x), "」である。")
end
print_typeof(true)
print_typeof(1)
print_typeof(1.0)
print_typeof('1')
print_typeof("1")
to get the following result:
表現「true」の値の型は「Bool」である。
表現「1」の値の型は「Int64」である。
表現「1.0」の値の型は「Float64」である。
表現「'1'」の値の型は「Char」である。
表現「"1"」の値の型は「String」である。
I want to write it more simple but show
doesn’t accept multiple arguments.
# impossible
show(a, b, c, d, e, f, g)
# possible
print(a, b, c, d, e, f, g)
So I need to define the following function to use print.
function showstring(x)
io = IOBuffer()
show(io, x)
result = String(take!(io))
close(io)
result
end
print(a, b, showstring(c), d, e, showstring(g))
By this, I can write print_typeof
as
print_typeof(x) = println("表現「", showstring(x), "」の値の型は「", typeof(x), "」である。")
or
sentence_typeof(x) = "表現「$(showstring(x))」の値の型は「$(typeof(x))」である。"
const print_typeof = println ∘ sentence_typeof
Is there another way to shorten the definition of my print_typeof
or showstring
?
Or, should I define showmultiple
?
showmultiple(xs...) = foreach(show, xs)