[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
gauche.version
- バージョン番号の比較 このモジュールは、バージョン番号(リリース番号)を比較する便利な手続きを提供します。
ここでのバージョン番号とはソフトウェアのリリースにつけられる
"0.5.1
"、"3.2-3
"、"8.2pl1
"といった文字列で、
通常これらの番号間には順序関係が定義できます。
例えば "1.2.3" は "1.2" より新しいが "2.1" より古い、といった具合です。
以下のようにこれらの文字列の順序を比較することができるようになります。
(version<? "2.2.3" "2.2.11") ⇒ #t (version<? "2.3.1" "2.3") ⇒ #f (version<? "2.3.1-1" "2.3.1-10") ⇒ #t (version<? "13a" "5b") ⇒ #f |
バージョン番号の付け方には特に標準というものはありませんが、 よく使われている方法を採用しました。全ての場合に使えるとはいきませんが、 大抵の場合はカバーできるのではないかと思います。
厳密に言えば、分岐などの場合があるのでバージョン番号間の関係は半順序関係にしかなりません。 このモジュールでは単純な定義を使って、全順序関係があるものとして扱います。
まず、ここでのバージョン番号は以下の構文に従うものとします。
<version> : <principal-release> | <version> <post-subrelease> | <version> <pre-subrelease> <principal-release> : <relnum> <post-subrelease> : [.-] <relnum> <pre-subrelease> : _ <relnum> <relnum> : [0-9A-Za-z]+ |
通常<relnum>
は数字部分と、それに続く省略可能な拡張部分とからなります。
例えば "23a
" は数字部分23と拡張部分"a
"からなります。
もし<relnum>
が数字で始まらない場合、その数字部分は-1であると考えることにします。
<relnum>
の順序関係を次のように定義します。
3b
" < "4a
"。
4c
" < "4d
"、"5
" < "5a
"。
<relnum>
間の順序が定義できたところで、バージョン番号の順序を次のように定義します。
<principal-release>
とそれに続く
サブリリース部品のリストに入れる。このリストの各要素のことを「リリース部品」
と呼びます。
以下はいくつかの例です。
"1" < "1.0" < "1.1" < "1.1.1" < "1.1.2" < "1.2" < "1.11" "1.2.3" < "1.2.3-1" < "1.2.4" "1.2.3" < "1.2.3a" < "1.2.3b" "1.2_rc0" < "1.2_rc1" < "1.2" < "1.2-pl1" < "1.2-pl2" "1.1-patch112" < "1.2_alpha" |
<pre-subrelease>
があるのは、「リリース候補」あるいは
「プリリリース」のバージョンをつかえるようにするためです。
ふたつのバージョン番号文字列 ver1 と ver2 の順序関係によって 真偽値を返します。もし引数が、バージョン番号を定義するのに不正な文字列を 含んでいたばあい、エラーが上ります。
ふたつのバージョン番号文字列 ver1 と ver2 を比較し、 ver1 のほうが ver2 より前、ver1 と ver2 は同じ、 ver1 が ver2 の後、の3つの場合によって、それぞれ、 -1、0、1 を返します。
これは version-compare
の下位レベルの手続きです。
ふたつのリリース番号 (relnum) rel1 と rel2 を比較し、
rel1 が rel2 より前、rel1 と rel2 が同じ、
rel1 が rel2 より後、の3つの場合によって、それぞれ、
-1、0、1 を返します。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] |
This document was generated by Shiro Kawai on November, 22 2009 using texi2html 1.78.