使用字符串宏
字符串宏是某些宏调用的语法糖。解析器扩展语法
mymacro"my string"
成
@mymacro_str "my string"
然后,像任何其他宏调用一样,替换为 @mymacro_str 宏返回的任何表达式。Base Julia 附带了几个字符串宏,例如:
@b_str
此字符串宏构造字节数组而不是字符串 。编码为 UTF-8 的字符串内容将用作字节数组。这对于与低级 API 接口非常有用,其中许多 API 使用字节数组而不是字符串。
julia> b"Hello World!"
12-element Array{UInt8,1}:
0x48
0x65
0x6c
0x6c
0x6f
0x20
0x57
0x6f
0x72
0x6c
0x64
0x21
@big_str
这个宏将返回从它给出的字符串解析的 BigInt 或 BigFloat。
julia> big"1"
1
julia> big"1.0"
1.000000000000000000000000000000000000000000000000000000000000000000000000000000
这个宏的存在是因为 big(0.1) 的行为并不像人们最初期望的那样:0.1 是真正的 0.1(1//10)的 Float64 近似,并且促进 BigFloat 将保持 Float64 的近似误差。使用宏将 0.1 直接解析为 BigFloat,减少了逼近误差。
julia> big(0.1)
1.000000000000000055511151231257827021181583404541015625000000000000000000000000e-01
julia> big"0.1"
1.000000000000000000000000000000000000000000000000000000000000000000000000000002e-01
@doc_str
此字符串宏构造 Base.Markdown.MD 对象,这些对象在内部文档系统中用于为任何环境提供富文本文档。这些 MD 对象在终端中呈现良好:

以及在浏览器中:

@html_str
此字符串宏构造 HTML 字符串文字,在浏览器中很好地呈现:

@ip_str
此字符串宏构造 IP 地址文字。它适用于 IPv4 和 IPv6:
julia> ip"127.0.0.1"
ip"127.0.0.1"
julia> ip"::"
ip"::"
@r_str
此字符串宏构造 Regex 文字 。
@s_str
此字符串宏构造 SubstitutionString 文字,它与 Regex 文字一起使用,以允许更高级的文本替换。
@text_str
这个字符串宏在精神上类似于 @doc_str 和 @html_str,但没有任何花哨的格式化功能:

@v_str
此字符串宏构造 VersionNumber 文字。请参阅版本号以获取它们的描述以及如何使用它们。
@MIME_str
此字符串宏构造单一类型的 MIME 类型。例如,MIME"text/plain" 是 MIME("text/plain") 的类型。