Исходя из соответствующего раздела документов Julia, я понимаю, что нестандартный строковый литерал, такой как foo"hello, world"
, эквивалентен явному вызову соответствующего макроса: @foo_str("hello, world")
.Однако должна быть какая-то дополнительная магия, которую я не понимаю.Рассмотрим формат даты dateformat"\m"
.Само по себе "\m"
выдает синтаксическую ошибку:
julia> "\m"
ERROR: syntax: invalid escape sequence
И такая же синтаксическая ошибка выдается, если я вызываю @dateformat_str("\m")
, поскольку строковый литерал "\m"
, по-видимому, оценивается или перед ним проверяется ошибка.передается макросу:
julia> using Dates
julia> @dateformat_str("\m")
ERROR: syntax: invalid escape sequence
Однако, используя нестандартные строковые литералы:
julia> dateformat"\m"
dateformat"\m"
Это нелогично, потому что я думал, что dateformat"\m"
было эквивалентнодо @dateformat_str("\m")
.Как нестандартный строковый литерал позволяет избежать синтаксической ошибки, генерируемой стандартным строковым литералом?