Встроенные строки в интерполированные строки в F#

#f# #string-interpolation

#f# #строка-интерполяция

Вопрос:

Кажется, я не могу понять, как я могу вставлять строки внутри интерполированной строки в F #. Внешне это очень похоже на C #. Например, в C # я бы написал что-то вроде

 Console.WriteLine($"Truly, it is {(string.IsNullOrEmpty("") ? "" : "not ")}empty.");

//Result: Truly, it is empty.   OR   Truly, it is not empty.
 

Круглые скобки внутри фигурных скобок позволяют мне вставлять дополнительные строковые литералы в выражение интерполяции.

Я попытался воспроизвести это в F # с помощью

 printfn $"Truly it is {(match (String.IsNullOrEmpty "l") with | true -> "" | false -> "not ")}empty."
 

Похоже, что круглые скобки, заключающие интерполированное выражение, не выполняют то же самое. Предлагается использовать явную let привязку для интерполированного выражения соответствия, но для целей обучения я хочу сделать это в одной строке.

Есть ли способ сделать это в F #, или я застрял, определяя a let для встроенной троичной функции?

Комментарии:

1. На заметку: идиоматический способ в F # заключается в использовании if then else вместо сопоставления с логическим значением.

2. Спасибо. Я только начинаю F # и все еще получаю свои ноги.

Ответ №1:

Используйте строки в тройных кавычках:

 printfn $"""Truly it is {match (String.IsNullOrEmpty "l") with | true -> "" | false -> "not "}empty."""
 

Комментарии:

1. Отлично! Спасибо!