使用字符串宏

字符串宏是某些宏调用的语法糖。解析器扩展语法

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

这个宏将返回从它给出的字符串解析的 BigIntBigFloat

julia> big"1"
1

julia> big"1.0"
1.000000000000000000000000000000000000000000000000000000000000000000000000000000

这个宏的存在是因为 big(0.1) 的行为并不像人们最初期望的那样:0.1 是真正的 0.11//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 对象在终端中呈现良好:

StackOverflow 文档

以及在浏览器中:

StackOverflow 文档

@html_str

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

StackOverflow 文档

@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,但没有任何花哨的格式化功能:

StackOverflow 文档

@v_str

此字符串宏构造 VersionNumber 文字。请参阅版本号以获取它们的描述以及如何使用它们。

@MIME_str

此字符串宏构造单一类型的 MIME 类型。例如,MIME"text/plain"MIME("text/plain") 的类型。