Преобразовать старый синтаксис Switch () в новый c# 8 - PullRequest
0 голосов
/ 18 апреля 2020

Я не могу понять, как преобразовать этот старый switch():

switch (Current)
{
    case '+':
        return new SyntaxToken(SyntaxKind.PlusToken, position++, "+", null);
    default:
        diagnostics.Add("Bad Token");
        return new SyntaxToken(SyntaxKind.BadToken, position++, text.Substring(position - 1, 1), null);
}

В новый синтаксис:

return Current switch
{
    '+' => new SyntaxToken(SyntaxKind.PlusToken, position++, "+", null),
    _ => new SyntaxToken(SyntaxKind.BadToken, position++, text.Substring(position - 1, 1), null),
};

Как мне удается получить часть журнала в новый синтаксис?

1 Ответ

0 голосов
/ 18 апреля 2020

Я использовал локальную функцию для ее решения, не знаю, правильное ли это решение, но я поделюсь им в любом случае:

return Current switch
{
    '+' => new SyntaxToken(SyntaxKind.PlusToken, position++, "+", null),
     _ =>  CreateAndLogInvalid(),
};

SyntaxToken CreateAndLogInvalid() 
{
     diagnostics.Add($"ERROR: bad character input: '{Current}'");
     return new SyntaxToken(SyntaxKind.BadToken, position++, text.Substring(position - 1, 1), null);
}
...