2008/3/18 火曜日

新しいクラスを作る(5) ― メソッド

Filed under: Powershell — flamework @ 11:05:50

概要

次のスクリプトにより、PowerShell で使える新しいクラスを作ることができます。詳しい作り方を 新しいクラスを作る(1) より少しずつ解説していますので、順にご覧ください。今回は、メソッドの作り方を解説します。

ダウンロード

メソッドの定義

メソッドは次のように定義します。

Method <属性> <戻り値の型> <メソッド名> <パラメータ型リスト> <実装>

<属性> には、 public, private, static のいずれかを指定できます。複数指定する場合には、「public, static」のように、カンマで区切って指定します。

<戻り値の型> には、型名を指定します。<実装> スクリプトブロック内で出力されたオブジェクトは、この型にキャストされ、戻り値となります。

<パラメータ型リスト> は、たとえば「([int], [string])」のように指定します。この場合、int 型の第一引数は $args[1] に代入され、 string 型の第二引数は $args[2] に代入されます。$args[0] には、オブジェクトインスタンスが代入されます。

用例

次の用例では、int 型の引数を二つ受取り、その合計を返すメソッド Plus を持つクラス Class9 を定義します。

PS> New-Class Class9 {
>>     Method public int Plus([int], [int]) {
>>         $args[1] + $args[2]
>>     }
>> }
>>

NameSpace Name BaseType
--------- ---- --------
  Class9 System.Object

PS> $o = New-Object Class9
PS> $o.Plus(1234, 567)
1801

2007/11/30 金曜日

新しいクラスを作る(4) ― プロパティ

Filed under: Powershell — flamework @ 12:02:34

プロパティの定義

プロパティは、次のように定義します。

Property <型> <名前> <実装>

<型>は、Type で、<名前> は、string、<実装>は ScriptBlock です。<実装> の中には Get-Value と Set-Value を定義します。$args[0] には、オブジェクトのインスタンスが格納されており、Set-Value 中の $args[1] には、プロパティに設定すべき値が格納されています。次の用例をご覧ください。

PS> New-Class Class7 {
>>     Field private string FMessage
>>     Property string Message {
>>         Get-Value {
>>             Get-PrivateField $args[0] FMessage
>>         }
>>         Set-Value {
>>             Set-PrivateField $args[0] FMessage $args[1]
>>         }
>>     }
>> }
>>
NameSpace Name BaseType
--------- ---- --------
  Class7 System.Object
 
PS> $o = New-Object Class7
PS> $o.Message = 'Hello World!'
PS> $o.Message
Hello World!

Set-Value が無い場合、プロパティは読み取り専用になります。

PS> New-Class Class8 {
>>     Property string Message {
>>         Get-Value { '読み取り専用!' }
>>     }
>> }
>>
NameSpace Name BaseType
--------- ---- --------
  Class8 System.Object

PS> $o = New-Object Class8
PS> $o.Message = 'Hello World!'
"Message" は ReadOnly のプロパティです。 発生場所 行:1 文字:4 + $o.M <<<< essage = 'Hello World!'
PS> $o.Message
読み取り専用!

ダウンロード

上記用例を実行するには、以下のスクリプトが必要です。

« 前ページへ次ページへ »

Copyright © flamework.net 2008.