Поддерживает ли PowerShell константы?



Я хотел бы объявить некоторые целочисленные константы в PowerShell.



есть ли хороший способ сделать это?

684   5  

5 ответов:

использовать

Set-Variable test -option Constant -value 100

или

Set-Variable test -option ReadOnly -value 100

разница между "константой" и "только для чтения" заключается в том, что переменная только для чтения может быть удалена (а затем повторно создана) через

Remove-Variable test -Force

в то время как постоянная переменная не может быть удален (даже с силой).

посмотреть этой статье для более подробной информации.

вот решение для определения константы, как это:

const myConst = 42

решение взято из http://poshcode.org/4063

    function Set-Constant {
  <#
    .SYNOPSIS
        Creates constants.
    .DESCRIPTION
        This function can help you to create constants so easy as it possible.
        It works as keyword 'const' as such as in C#.
    .EXAMPLE
        PS C:\> Set-Constant a = 10
        PS C:\> $a += 13

        There is a integer constant declaration, so the second line return
        error.
    .EXAMPLE
        PS C:\> const str = "this is a constant string"

        You also can use word 'const' for constant declaration. There is a
        string constant named '$str' in this example.
    .LINK
        Set-Variable
        About_Functions_Advanced_Parameters
  #>
  [CmdletBinding()]
  param(
    [Parameter(Mandatory=$true, Position=0)]
    [string][ValidateNotNullOrEmpty()]$Name,

    [Parameter(Mandatory=$true, Position=1)]
    [char][ValidateSet("=")]$Link,

    [Parameter(Mandatory=$true, Position=2)]
    [object][ValidateNotNullOrEmpty()]$Mean,

    [Parameter(Mandatory=$false)]
    [string]$Surround = "script"
  )

  Set-Variable -n $name -val $mean -opt Constant -s $surround
}

Set-Alias const Set-Constant

чтобы использовать определенный тип значения, скажем Int64, вы можете явно привести значение, используемое в set-variable.

например:

set-variable -name test -value ([int64]100) -option Constant

чтобы проверить,

$test | gm

и вы увидите, что это Int64 (а не Int32, что было бы нормально для значения 100).

использовать -option Constant С :

Set-Variable myvar -option Constant -value 100

теперь $myvar имеет постоянное значение 100 и не могут быть изменены.

PowerShell v5. 0 должен разрешить

[static] [int] $variable = 42

[static] [DateTime] $thisday

и тому подобное.

Comments

    Ничего не найдено.