#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. Отлично! Спасибо!