「Windows/powershell/クラス」の版間の差分
提供: 初心者エンジニアの簡易メモ
(→staticメソッドからstaticメソッドを呼ぶ) |
(→static変数) |
||
| 行88: | 行88: | ||
static [int] $level | static [int] $level | ||
[void] SetLevel([int] $level) { | [void] SetLevel([int] $level) { | ||
| − | [Log]:: level = $level | + | [Log]::level = $level |
} | } | ||
} | } | ||
| − | <pre> | + | </pre> |
==クラスを別ファイルにする場合== | ==クラスを別ファイルにする場合== | ||
2021年9月2日 (木) 18:35時点における最新版
目次
サンプル(インスタンス生成)
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メソッドがを呼ぶ前のクラス読み込み前に、その先のメソッドを呼び出しておく。
例:mainからExample.hello()からLog.info()を呼び出す場合は、 main.csに以下順序で、呼び出す。
. ./Log.cs . ./Example.cs ・・・処理
static変数
class Log {
static [int] $level
[void] SetLevel([int] $level) {
[Log]::level = $level
}
}
クラスを別ファイルにする場合
HelloClass.ps1
class HelloClass {
[string] hello() {
return "Hello!!"
}
}
main.ps1
. ./HelloClass.ps1 $helloObj = New-Object HelloClass $helloObj.hello()
クラス内のメソッドから、別メソッドを呼び出す
$this.を使えば良い。
class HelloClass {
[string] main() {
$this.hello()
}
[string] hello() {
return "Hello!!"
}
}
