18

私はいくつかのテストを行っていて、次のことに遭遇しました。

必要に応じて、PoShv5 のメソッドをオーバーロードできます。パラメーターなしでメソッドを呼び出す場合は、パラメーターを使用してメソッドを内部的に呼び出し、コードを冗長にしないようにすることができます。これはコンストラクターにも当てはまると思いました。

この例では、最後のコンストラクターが期待どおりに機能しています。他のコンストラクターは、値が設定されていないオブジェクトのみを返します。

Class car {
    [string]$make
    [string]$model
    [int]$Speed
    [int]$Year

    speedUp (){
        $this.speedUp(5)
    }
    speedUp ([int]$velocity){
        $this.speed += $velocity
    }

    # Constructor
    car () {
        [car]::new('mall', $Null, $null)
    }

    car ([string]$make, [string]$model) {
        [car]::new($make, $model, 2017)
    }

    car ([string]$make, [string]$model, [int]$Year) { 
        $this.make = $make
        $this.model = $model
        $this.Year = $year
    }
}

[car]::new() # returns "empty" car
[car]::new('Make', 'Nice model') # returns also an "empty" one
[car]::new( 'make', 'nice model', 2017) # returns a "filled" instance

これを修正する方法はありますか?私は何か見落としてますか?

4

2 に答える 2