Can I write a class using powershell?

后端 未结 3 1031
北恋
北恋 2020-12-13 00:01

I\'m still learning powershell, and so far I haven\'t found an answer on this website, despite a few searches. With Powershell being built on top of the .NET framework, can

3条回答
  •  無奈伤痛
    2020-12-13 00:36

    You can use the class keyword that was introduced in PowerShell 5.0

    Here is an example by Trevor Sullivan. (Archived here.)

    ##################################################
    ####### WMF 5.0 November 2014 Preview ###########
    ##################################################
    class Beer {
        # Property: Holds the current size of the beer.
        [Uint32] $Size;
        # Property: Holds the name of the beer's owner.
        [String] $Name;
    
        # Constructor: Creates a new Beer object, with the specified
        #              size and name / owner.
        Beer([UInt32] $NewSize, [String] $NewName) {
            # Set the Beer size
            $this.Size = $NewSize;
            # Set the Beer name
            $this.Name = $NewName;
        }
    
        # Method: Drink the specified amount of beer.
        # Parameter: $Amount = The amount of beer to drink, as an 
        #            unsigned 32-bit integer.
        [void] Drink([UInt32] $Amount) {
            try {
                $this.Size = $this.Size - $Amount;
            }
            catch {
                Write-Warning -Message 'You tried to drink more beer than was available!';
            }
        }
    
        # Method: BreakGlass resets the beer size to 0.
        [void] BreakGlass() {
            Write-Warning -Message 'The beer glass has been broken. Resetting size to 0.';
            $this.Size = 0;
        }
    }
    

    This works on Windows 10 Pro.

    Test drive it like this:

    # Create a new 33 centilitre beer, named 'Chimay'
    $chimay = [Beer]::new(33, 'Chimay');
    
    $chimay.Drink(10)
    $chimay.Drink(10)
    
    # Need more beer!
    $chimay.Drink(200)
    
    $chimay.BreakGlass()
    

提交回复
热议问题