Как я могу избежать чтения хоста, нажав escape?

В Java все находится в форме класса.

Если вы хотите использовать любой объект, тогда у вас есть две фазы:

  1. Объявить
  2. Инициализация

Пример:

  • Объявление: Object a;
  • Инициализация: a=new Object();

То же самое для концепции массива

  • Объявление: Item i[]=new Item[5];
  • Инициализация: i[0]=new Item();

Если вы не дают секцию инициализации, тогда возникает NullpointerException.

1
задан Davkro 4 April 2019 в 23:46
поделиться

1 ответ

Вы не можете сделать это с помощью Read-Host, но вы можете сделать это с помощью модуля PSReadLine (поставляется с Windows PowerShell версии 5 или выше в Windows 10 / Windows Server 2016) и PowerShell Core) и его PSConsoleHostReadline функция:

Важно:

  • Начиная с PSReadLine v2.0.0-beta3, решение ниже является hack , потому что PSConsoleHostReadline поддерживает запрос только для операторов PowerShell , а не для открытого пользовательского ввода.

    • В этом предложении функции GitHub запрашивается возможность использования функции для пользовательского ввода общего назначения, что позволило бы в значительной степени настраивать взаимодействие с конечным пользователем. Сделайте так, чтобы ваш голос был услышан там, если вы хотите, чтобы это предложение было реализовано.
  • Хак должен работать в вашем случае , поскольку имена пользователей, для которых вы запрашиваете, должны быть синтаксически допустимыми операторами PowerShell.

    • Однако поддержка произвольного ввода проблематична по двум причинам:

      • Будет применена не применимая раскраска синтаксиса - однако вы можете временно установить для всех настраиваемых цветов значение того же цвета, но это было бы громоздко.

      • Что еще более важно, если входные данные являются чем-то, что составляет синтаксически неполное выражение PowerShell, [115 ] не примет ввод и вместо этого продолжит запрашивать (в новой строке); например, ввод a| вызовет эту проблему.

    • Также:

      • [ 1134] Независимо от того, что вводится, он всегда добавляется в историю команд .

      • Хотя вы можете удалить временно установленный обработчик клавиатуры при выходе из скрипта, нет надежного способа восстановить ранее активный - см. это Выпуск GitHub .

     # Set up a key handler that cancels the prompt on pressing ESC (as Ctrl-C would).
     Set-PSReadLineKeyHandler -Key Escape -Function CancelLine
    
     try {
    
       # Prompt the user:
       Write-Host -NoNewline 'Enter account name you wish to disable: '
       

    Вы не можете сделать это с помощью Read-Host, но вы можете сделать это с помощью модуля PSReadLine (поставляется с Windows PowerShell версии 5 или выше в Windows 10 / Windows Server 2016) и PowerShell Core) и его PSConsoleHostReadline функция:

    Важно:

    • Начиная с PSReadLine v2.0.0-beta3, решение ниже является hack , потому что PSConsoleHostReadline поддерживает запрос только для операторов PowerShell , а не для открытого пользовательского ввода.

      • В этом предложении функции GitHub запрашивается возможность использования функции для пользовательского ввода общего назначения, что позволило бы в значительной степени настраивать взаимодействие с конечным пользователем. Сделайте так, чтобы ваш голос был услышан там, если вы хотите, чтобы это предложение было реализовано.
    • Хак должен работать в вашем случае , поскольку имена пользователей, для которых вы запрашиваете, должны быть синтаксически допустимыми операторами PowerShell.

      • Однако поддержка произвольного ввода проблематична по двум причинам:

        • Будет применена не применимая раскраска синтаксиса - однако вы можете временно установить для всех настраиваемых цветов значение того же цвета, но это было бы громоздко.

        • Что еще более важно, если входные данные являются чем-то, что составляет синтаксически неполное выражение PowerShell, [115 ] не примет ввод и вместо этого продолжит запрашивать (в новой строке); например, ввод a| вызовет эту проблему.

      • Также:

        • [ 1134] Независимо от того, что вводится, он всегда добавляется в историю команд .

        • Хотя вы можете удалить временно установленный обработчик клавиатуры при выходе из скрипта, нет надежного способа восстановить ранее активный - см. это Выпуск GitHub .

      [110]Name = PSConsoleHostReadLine # If ESC was pressed,

      Вы не можете сделать это с помощью Read-Host, но вы можете сделать это с помощью модуля PSReadLine (поставляется с Windows PowerShell версии 5 или выше в Windows 10 / Windows Server 2016) и PowerShell Core) и его PSConsoleHostReadline функция:

      Важно:

      • Начиная с PSReadLine v2.0.0-beta3, решение ниже является hack , потому что PSConsoleHostReadline поддерживает запрос только для операторов PowerShell , а не для открытого пользовательского ввода.

        • В этом предложении функции GitHub запрашивается возможность использования функции для пользовательского ввода общего назначения, что позволило бы в значительной степени настраивать взаимодействие с конечным пользователем. Сделайте так, чтобы ваш голос был услышан там, если вы хотите, чтобы это предложение было реализовано.
      • Хак должен работать в вашем случае , поскольку имена пользователей, для которых вы запрашиваете, должны быть синтаксически допустимыми операторами PowerShell.

        • Однако поддержка произвольного ввода проблематична по двум причинам:

          • Будет применена не применимая раскраска синтаксиса - однако вы можете временно установить для всех настраиваемых цветов значение того же цвета, но это было бы громоздко.

          • Что еще более важно, если входные данные являются чем-то, что составляет синтаксически неполное выражение PowerShell, [115 ] не примет ввод и вместо этого продолжит запрашивать (в новой строке); например, ввод a| вызовет эту проблему.

        • Также:

          • [ 1134] Независимо от того, что вводится, он всегда добавляется в историю команд .

          • Хотя вы можете удалить временно установленный обработчик клавиатуры при выходе из скрипта, нет надежного способа восстановить ранее активный - см. это Выпуск GitHub .

        [110]Name will contain the empty string. # Note that you won't be able to distinguish that from the user # just pressing ENTER. $canceled =

        Вы не можете сделать это с помощью Read-Host, но вы можете сделать это с помощью модуля PSReadLine (поставляется с Windows PowerShell версии 5 или выше в Windows 10 / Windows Server 2016) и PowerShell Core) и его PSConsoleHostReadline функция:

        Важно:

        • Начиная с PSReadLine v2.0.0-beta3, решение ниже является hack , потому что PSConsoleHostReadline поддерживает запрос только для операторов PowerShell , а не для открытого пользовательского ввода.

          • В этом предложении функции GitHub запрашивается возможность использования функции для пользовательского ввода общего назначения, что позволило бы в значительной степени настраивать взаимодействие с конечным пользователем. Сделайте так, чтобы ваш голос был услышан там, если вы хотите, чтобы это предложение было реализовано.
        • Хак должен работать в вашем случае , поскольку имена пользователей, для которых вы запрашиваете, должны быть синтаксически допустимыми операторами PowerShell.

          • Однако поддержка произвольного ввода проблематична по двум причинам:

            • Будет применена не применимая раскраска синтаксиса - однако вы можете временно установить для всех настраиваемых цветов значение того же цвета, но это было бы громоздко.

            • Что еще более важно, если входные данные являются чем-то, что составляет синтаксически неполное выражение PowerShell, [115 ] не примет ввод и вместо этого продолжит запрашивать (в новой строке); например, ввод a| вызовет эту проблему.

          • Также:

            • [ 1134] Независимо от того, что вводится, он всегда добавляется в историю команд .

            • Хотя вы можете удалить временно установленный обработчик клавиатуры при выходе из скрипта, нет надежного способа восстановить ранее активный - см. это Выпуск GitHub .

          [110]Name -eq '' # ... act on potential cancellation } finally { # Remove the custom Escape key handler. Remove-PSReadlineKeyHandler -Key Escape }
0
ответ дан mklement0 4 April 2019 в 23:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: