mxsdoc

Comparer.ms

struct ComparerStruct

2つのオブジェクトが等しいかどうかを比較する。

補足

戻り値が以下のような関係になるように実装する。

関係
-1 abより小さい
0 abは等しい
1 abより大きい

private stringLogicalComparer

プロパティ
<DotNetMethod>

public fn CompareName

Nameプロパティを比較する。

パラメータ
a
<Any>
パラメータ
b
<Any>
戻り値
<Integer>
補足

値が文字列の場合はCompareStringLogicalを利用する。

public fn CompareNodeHandle

ノードハンドルを比較する。

パラメータ
a
<Node>
パラメータ
b
<Node>
戻り値
<Integer>

public fn CompareProperty

任意のプロパティを比較する。

パラメータ
a
<Any>
パラメータ
b
<Any>
パラメータ
propName:
<Name|String>

プロパティ名。

戻り値
<Integer>
補足

値が文字列の場合はCompareStringLogicalを利用する。

public fn CompareStringLogical

文字列中の数字を数値として比較する。

パラメータ
a
<String>
パラメータ
b
<String>
戻り値
<Integer>
補足
(
  local strings = #(
    "20string",
    "2string",
    "3string",
    "st20ring",
    "st2ring",
    "st3ring",
    "string2",
    "string20",
    "string3"
  )
  qsort strings (::ComparerStruct()).CompareStringLogical

  for str in strings do format "-- \"%\"\n" str
  ok
)
-- 実行結果
-- "2string"
-- "3string"
-- "20string"
-- "st2ring"
-- "st3ring"
-- "st20ring"
-- "string2"
-- "string3"
-- "string20"

private fn simpleCompare

パラメータ
a
<Any>
パラメータ
b
<Any>
戻り値
<Integer>

public fn StructName

戻り値
<Name>

public fn Dump

パラメータ
indent:
<String>
パラメータ
out:
<FileStream|StringStream|WindowStream>

出力先。既定値はlistener

戻り値
<OkClass>

public fn Equals

パラメータ
obj
<Any>
戻り値
<BooleanClass>
補足

大文字と小文字を区別する。