VersionNumber (クラス)
public sealed serializable VersionNumber {inherits Serializable}
パッケージ: CURL.LANGUAGE.COMPONENT
直接継承しているサブクラス: ExtendedVersionNumber

n.n...n のフォームでソフトウェアのバージョンを表すクラス。

説明

from-string の暗黙的なファクトリーによって、StringInterface からこのクラスへの自動的なキャスティングがサポートされています。したがって、VersionNumber が必要な場合に "n.n...n" のフォームの文字列を使用することができます。次に例を示します。

{package MY-PACKAGE,
    || This is ok, because a VersionNumber is expected
    || for the built in version attribute.
    version="1.3",
    || This is just a string because the system doesn't
    || know anything about the expected type of my-version.
    my-version="1.3",
    || This is ok.
    another-version={VersionNumber 1,3}
}

{import ANOTHER-PACKAGE, version="1.4.5"}

{let public constant version:VersionNumber = "2.4"}


作成された VersionNumber オブジェクトは不変オブジェクトになります

ExtendedVersionNumber も参照してください。

コンストラクタ
default:バージョン番号を初期化します。
コンストラクタ public {VersionNumber.default
copy-from:#VersionNumber = null,
copy-n:int = 0,
...:uint16
}
from-string:文字列から VersionNumber を作成します。
ファクトリ public implicit {VersionNumber.from-string}:VersionNumber

プロパティ
size:バージョン内のコンポーネントの数。
アクセサ public sealed VersionNumber.size:int

メソッド
compare-to:other のバージョンとの比較を行ないます。
public sealed {VersionNumber.compare-to other:VersionNumber}:int
component:0 から開始して、バージョン番号の n 番目のコンポーネントを返します。
public sealed {VersionNumber.component n:int}:uint16
n-clone:n 個のコンポーネントを含む、このバージョン番号のコピーを返します。
public sealed inline {VersionNumber.n-clone
n:int = self.size
}:VersionNumber
n-equal?:最初の n 個のコンポーネントが同じ場合に true を返します。
public sealed {VersionNumber.n-equal?
other:VersionNumber,
n:int = {max self.size, other.size}
}:bool
next-version:この次のバージョンを返します。
public sealed {VersionNumber.next-version
n:int = self.size
}:VersionNumber
partial-match?:other がこのバージョンと部分的に一致するかどうかを示します。
public sealed {VersionNumber.partial-match? other:VersionNumber}:bool
メソッド 継承 Object: object-describe, object-describe-for-debugging, object-serialize



コンストラクタ詳細
default (コンストラクタ)
public {VersionNumber.default
copy-from:#VersionNumber = null,
copy-n:int = 0,
...:uint16
}

バージョン番号を初期化します。

copy-from: 指定された場合、値はこのオブジェクトからコピーされます。copy-n パラメータはコピーされるコンポーネントの数を決定します。
copy-n: copy-from が null 以外で、コピーするコンポーネントの数を指定する場合にのみ使用されます。1 以上の任意の値を指定できます。1 より小さい場合、既定により copy-from オブジェクトのサイズになります。copy-from のサイズより大きい場合、追加されるコンポーネントはゼロになります。
...: バージョン番号のコンポーネントを指定する、正の整数のリスト。


from-string (ファクトリ)
public implicit {VersionNumber.from-string}:VersionNumber

文字列から VersionNumber を作成します。

string: バージョン番号を含む文字列で、これは 1 つまたは複数の負の数でない整数をドットで区切り、必要な場合は '+' で終了するというフォームで指定します。'+' で終了すると ExtendedVersionNumber が作成されます。

戻り値

string に対応する VersionNumber が返されます。文字列のフォームが正しくない場合は BadVersionNumberException をスローします。



プロパティ詳細
size (アクセサ)
アクセサ public sealed VersionNumber.size:int

バージョン内のコンポーネントの数。

説明

常に 0 より大きくなります。





メソッド詳細
compare-to (メソッド)
public sealed {VersionNumber.compare-to other:VersionNumber}:int

other のバージョンとの比較を行ないます。

戻り値

次のような値を返します。

説明

ゼロまたは複数のコンポーネントを比べて両方のバージョンが同じでも、その次のコンポーネントでこのバージョンの方が大きい場合は、このバージョンの方が新しいと見なされます。


component (メソッド)
public sealed {VersionNumber.component n:int}:uint16

0 から開始して、バージョン番号の n 番目のコンポーネントを返します。

説明

n が VersionNumber.size 以上の場合は 0 を返します。


n-clone (メソッド)
public sealed inline {VersionNumber.n-clone
n:int = self.size
}:VersionNumber

n 個のコンポーネントを含む、このバージョン番号のコピーを返します。

説明

nsize より大きい場合、追加のコンポーネントは 0 に設定されます。ExtendedVersionNumber の場合、size より大きい n の値は無視されます。

nsize より小さい場合、戻り値のバージョンは切り捨てられたものになります。切り捨てられたバージョンは常に VersionNumber 型で、サブタイプではありません。


例: VersionNumber.n-clone の使用
{define-proc {make-table max-n:int =4, ...:VersionNumber}:Table
    let table:Table =
        {Table cell-border-width=1, cell-border-color="black"}

    || Column labels
    {for n = 1 to max-n do
        {table.add row = 1, column = n,
            {cell background="beige", n == {value n}}
        }
    }

    || Generate table rows
    {for version key i in ... do
        let row = i + 2
        {table.add row = row, column = 0,
            {cell background="beige", {value version}}
        }
        {for n = 1 to max-n do
            || Add cloned number to table cell
            {table.add row = row, column = n,
                {version.n-clone n = n}
            }
        }
    }
    {return table}
}

{make-table "1.2.3", "1.2.3+"}


n-equal? (メソッド)
public sealed {VersionNumber.n-equal?
other:VersionNumber,
n:int = {max self.size, other.size}
}:bool

最初の n 個のコンポーネントが同じ場合に true を返します。



next-version (メソッド)
public sealed {VersionNumber.next-version
n:int = self.size
}:VersionNumber

この次のバージョンを返します。

説明

このバージョンの n 番目のコンポーネントの番号を増やして、次のバージョン番号を返します。ExtendedVersionNumber では、n の値が size 以上の場合にこれらは size より小さいものと同じように扱われます。


例: VersionNumber.next-version の使用
{define-proc {make-table max-n:int =4, ...:VersionNumber}:Table
    let table:Table =
        {Table cell-border-width=1, cell-border-color="black"}

    || Column labels
    {for n = 1 to max-n do
        {table.add row = 1, column = n,
            {cell background="beige", n == {value n}}
        }
    }

    || Generate table rows
    {for version key i in ... do
        let row = i + 2
        {table.add row = row, column = 0,
            {cell background="beige", {value version}}
        }
        {for n = 1 to max-n do
            || Add next version to table cell
            {table.add row = row, column = n,
                {version.next-version n = n}
            }
        }
    }
    {return table}
}

{make-table "1.2.3", "1.2.3+"}


partial-match? (メソッド)
public sealed {VersionNumber.partial-match? other:VersionNumber}:bool

other がこのバージョンと部分的に一致するかどうかを示します。

説明

other のコンポーネントが、このバージョンの最後のコンポーネントまで一致する場合、バージョン番号は部分的に一致していることになります。

たとえば、"1.2.3" は "1.2.3" や "1.2.3.7" とは部分的に一致しますが、"1.2.4" や "1.3" とは一致しません。