String macros are syntactic sugar for certain macro invocations. The parser expands syntax like
mymacro"my string"
into
@mymacro_str "my string"
which then, like any other macro call, gets substituted with whatever expression the @mymacro_str macro returns. Base Julia comes with several string macros, such as:
@b_strThis string macro constructs byte arrays instead of strings. The contents of the string, encoded as UTF-8, will be used as the array of bytes. This can be useful for interfacing with low-level APIs, many of which work with byte arrays instead of strings.
julia> b"Hello World!"
12-element Array{UInt8,1}:
0x48
0x65
0x6c
0x6c
0x6f
0x20
0x57
0x6f
0x72
0x6c
0x64
0x21
@big_strThis macro will return a BigInt or a BigFloat parsed from the string it's given.
julia> big"1"
1
julia> big"1.0"
1.000000000000000000000000000000000000000000000000000000000000000000000000000000
This macro exists because big(0.1) does not behave as one might initially expect: the 0.1 is a Float64 approximation of true 0.1 (1//10), and promoting that to BigFloat will keep the approximation error of Float64. Using the macro will parse 0.1 directly to a BigFloat, reducing the approximation error.
julia> big(0.1)
1.000000000000000055511151231257827021181583404541015625000000000000000000000000e-01
julia> big"0.1"
1.000000000000000000000000000000000000000000000000000000000000000000000000000002e-01
@doc_strThis string macro constructs Base.Markdown.MD objects, which are used in the internal documentation system to provide rich-text documentation for any environment. These MD objects render well in a terminal:
and also in a browser:
@html_strThis string macro constructs HTML string literals, which render nicely in a browser:
@ip_strThis string macro constructs IP address literals. It works with both IPv4 and IPv6:
julia> ip"127.0.0.1"
ip"127.0.0.1"
julia> ip"::"
ip"::"
@r_strThis string macro constructs Regex literals.
@s_strThis string macro constructs SubstitutionString literals, which work together with Regex literals to allow more advanced textual substitution.
@text_strThis string macro is similar in spirit to @doc_str and @html_str, but does not have any fancy formatting features:
@v_strThis string macro constructs VersionNumber literals. See Version Numbers for a description of what they are and how to use them.
@MIME_strThis string macro constructs the singleton types of MIME types. For instance, MIME"text/plain" is the type of MIME("text/plain").