「Windows/powershell/クラス」の版間の差分
提供: 初心者エンジニアの簡易メモ
(→staticメソッドからstaticメソッドを呼ぶ) |
(→クラスを別ファイルにする場合) |
||
行74: | 行74: | ||
==クラスを別ファイルにする場合== | ==クラスを別ファイルにする場合== | ||
+ | HelloClass.ps1 | ||
+ | <pre> | ||
+ | class HelloClass { | ||
+ | [string] hello() { | ||
+ | return "Hello!!" | ||
+ | } | ||
+ | } | ||
+ | </pre> | ||
+ | |||
+ | main.ps1 | ||
+ | <pre> | ||
+ | . ./HelloClass.ps1 | ||
+ | $helloObj = New-Object HelloClass | ||
+ | $helloObj.hello() | ||
+ | </pre> |
2021年8月27日 (金) 18:31時点における版
目次
サンプル(インスタンス生成)
HelloClass.ps1
class HelloClass { [string] hello() { return "Hello!!" } [void] test() { Write-Host "hoge" } } $helloObj = New-Object HelloClass # $helloObj = [HelloClass]::new() #こちらでもよい $helloObj.hello() $helloObj.test() # hoge
参考:https://www.vwnet.jp/Windows/PowerShell/2017082401/PSv5Class06.htm
サンプル(コンストラクト)
HelloClass.ps1
class HelloClass { [string] $name HelloClass([string] $name) { Write-Host $name $this.name = $name } [string] hello() { return "Hello!! " + $this.name } } $helloObj = [HelloClass]::new("taro") $helloObj.hello()
参考:https://www.vwnet.jp/Windows/PowerShell/2017082401/PSv5Class06.htm
サンプル静的クラス
HelloUtil.ps1
class HelloUtil { static [int] hello([int] $test) { return $test } } [HelloUtil]::hello(11)
ハッシュの値を返す
ハッシュの型はhashtableになる。
class HashClass { static [hashtable] load() { $hash = @{ Number = 1; Shape = "Square"; Color = "Blue"} return $hash } } $config1 = [IniClass]::load() Write-Host $config1.number # 1
globalにしたデータは取得できない
class HashClass { static [hashtable] load() { $global.hash = @{ Number = 1; Shape = "Square"; Color = "Blue"} return $hash } } $hashData = [HashClass]::load() > Unable to find type [HashClass].
staticメソッドからstaticメソッドを呼ぶ
呼べなかった。インスタンス生成したメソッドからstaticメソッドは呼べる
クラスを別ファイルにする場合
HelloClass.ps1
class HelloClass { [string] hello() { return "Hello!!" } }
main.ps1
. ./HelloClass.ps1 $helloObj = New-Object HelloClass $helloObj.hello()