使用字符串宏
字符串宏是某些宏调用的语法糖。解析器扩展语法
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")
的类型。