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

Component をそのメタデータに基づいて選択するのに使用します。

改訂

このクラスは Curl 7.0 で serializable に定義されました。

コンストラクタ
clone-from:other のクローンとしてセレクタを作成します。
コンストラクタ protected {ComponentSelector.clone-from
other:ComponentSelector,
deep-copy?:bool = false
}
default:セレクタを初期化します。
コンストラクタ public {ComponentSelector.default
prefer-jit?:bool = false,
frozen?:bool = false,
from-string:#String = null,
component-type:#String = null,
name:#String = null,
version:#VersionNumber = null,
...
}

プロパティ
location-hints:コンポーネントが存在する可能性のある場所を識別する Url のリスト。
アクセサ public final inline ComponentSelector.location-hints:#{ReadOnlyArray-of Url}
セッター public final ComponentSelector.location-hints:#{ReadOnlyArray-of Url}
prefer-jit?:true の場合は JIT コンパイル コンポーネントが優先され、それ以外の場合は非 JIT コンパイル コンポーネントが優先されます。
フィールド deprecated public ComponentSelector.prefer-jit?:bool
プロパティ 継承 ComponentMetaData: author, cache-duration, compilation-time, component-type, content-id, content-size, copyright, curl-api-version, curl-file-signatures, curl-versions, debuggable?, default-locale, file, file-format, files, frozen?, id, jit-compilable?, jit-compiled?, license, locale, manifest, name, origin-url-names, package-caching-style, release-notes, release-timestamp, requires-privilege?, resource-directory, resync-adjust?, resync-as-of, resync-file, SHA-1-digest, source-url, source-url-name, transitive-id, translations-file, version

クラス変数と定数
ComparisonProc:2 つの ComponentSelector を比較するプロシージャ型。
public constant ComponentSelector.ComparisonProc:ProcType ={proc-type {s1:ComponentSelector, s2:ComponentSelector}:bool}

クラス プロシージャ
prefer-first?:first-selectorsecond-selector より優先されるどうかを示します。
public {ComponentSelector.prefer-first?
first-selector:ComponentSelector,
second-selector:ComponentSelector
}:bool

メソッド
add-location-hint:new-hintComponentSelector.location-hints に追加します。
public sealed {ComponentSelector.add-location-hint new-hint:Url}:void
clone:オブジェクトのクローンを返します。
public sealed inline {ComponentSelector.clone
deep-copy?:bool = false
}:ComponentSelector
compare:2 つのメタデータを比較してどちらの方がより一致しているかを判定します。
public sealed {ComponentSelector.compare
meta-data1:ComponentMetaData,
meta-data2:ComponentMetaData
}:int
freeze:メタデータが変更できないようにこれをフリーズします。
public sealed {ComponentSelector.freeze}:void
load-component-from:locator を使用して、このセレクタのコンポーネントを検索してロードします。
public final {ComponentSelector.load-component-from
locator:ComponentLocator,
accept-loader?:{proc-type {ComponentLoader}:bool} = ComponentSelector.accept-loader
}:(component:#Component, reject-count:int)
location-matches?:メタデータと場所のヒントが other に一致するかどうかを示します。
public sealed {ComponentSelector.location-matches?}:(match?:bool, first-non-match:#String)
select:優先されるコンポーネント ローダーをリストから選択します。
public final {ComponentSelector.select
loaders:{Array-of ComponentLoader},
accept-loader?:{proc-type {ComponentLoader}:bool} = ComponentSelector.accept-loader
}:(loader:#ComponentLoader, reject-count:int)
select-loader-from:locator から優先される ComponentLoader を選択します。
public final {ComponentSelector.select-loader-from
locator:ComponentLocator,
accept-loader?:{proc-type {ComponentLoader}:bool} = ComponentSelector.accept-loader
}:(loader:#ComponentLoader,reject-count:int)
メソッド 継承 ComponentMetaData: assert-match, assert-not-frozen, get, get-if-exists, keys-to-Iterator, matches?, set, set-meta-data, set?, unset
メソッド 継承 Object: object-describe, object-describe-for-debugging, object-serialize



コンストラクタ詳細
clone-from (コンストラクタ)
protected {ComponentSelector.clone-from
other:ComponentSelector,
deep-copy?:bool = false
}

other のクローンとしてセレクタを作成します。



default (コンストラクタ)
public {ComponentSelector.default
prefer-jit?:bool = false,
frozen?:bool = false,
from-string:#String = null,
component-type:#String = null,
name:#String = null,
version:#VersionNumber = null,
...
}

セレクタを初期化します。

prefer-jit?: 対応する属性を設定します。
frozen?: 対応する frozen? 属性を設定します。これを true に設定すると、セレクタが作成後に変更されることを防ぎます。
from-string:
Curl のソース フォーム内の文字列から、カンマ区切りのキーワード/値のペアを解析します。次に例を示します。
{ComponentSelector
    from-string = |"name = "A", version = "1.0""|
}
component-type: 対応する component-type メタデータ属性を設定します。
name: 対応する name メタデータ属性を設定します。
version: 対応する version メタデータ属性を設定します。
...: ComponentMetaData.default で受け取られるフォーマットと同じキーワード / 値のペア

location キーワードは特別に処理されます。これは、セレクタの追加される場所のヒントを指定する Url である必要があります。複数回指定することができます。



プロパティ詳細
location-hints (アクセサ)
アクセサ public final inline ComponentSelector.location-hints:#{ReadOnlyArray-of Url}
セッター public final ComponentSelector.location-hints:#{ReadOnlyArray-of Url}

コンポーネントが存在する可能性のある場所を識別する Url のリスト。



prefer-jit? (フィールド)
deprecated public ComponentSelector.prefer-jit?:bool

true の場合は JIT コンパイル コンポーネントが優先され、それ以外の場合は非 JIT コンパイル コンポーネントが優先されます。

非推奨

このフィールドは使用しないでください。



クラス変数と定数の詳細
ComparisonProc (クラス定数)
public constant ComponentSelector.ComparisonProc:ProcType ={proc-type {s1:ComponentSelector, s2:ComponentSelector}:bool}

2 つの ComponentSelector を比較するプロシージャ型。




クラス プロシージャ詳細
prefer-first? (クラスプロシージャ)
public {ComponentSelector.prefer-first?
first-selector:ComponentSelector,
second-selector:ComponentSelector
}:bool

first-selectorsecond-selector より優先されるどうかを示します。

説明

ComponentSelector.compare を使用して、優先されるセレクタを決定します。



メソッド詳細
add-location-hint (メソッド)
public sealed {ComponentSelector.add-location-hint new-hint:Url}:void

new-hintComponentSelector.location-hints に追加します。

hint: コンポーネントが見つかる可能性がある場所を示す Urlnull の場合は無視されます。

説明

new-hint がすでに location-hints にある場合は何も行なわれません。


clone (メソッド)
public sealed inline {ComponentSelector.clone
deep-copy?:bool = false
}:ComponentSelector

オブジェクトのクローンを返します。



compare (メソッド)
public sealed {ComponentSelector.compare
meta-data1:ComponentMetaData,
meta-data2:ComponentMetaData
}:int

2 つのメタデータを比較してどちらの方がより一致しているかを判定します。

戻り値

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

説明

この比較機能の優先順位は次のとおりです。
  • 最新バージョンの項目
  • 最も明確なロケールの項目
  • コンパイル時間が最初の項目
  • 優先 jit-compiled? 設定の項目
ロケール名の明確さを最も低いものから順に並べると次のようになります。
  • null または欠落している
  • 値 "default"
  • 言語のみ、つまり "en" のように、ハイフンを含まない名前
  • 言語と国名、つまり "en-US" のようにハイフンを最低 1 つ含む名前


freeze (メソッド)
public sealed {ComponentSelector.freeze}:void

メタデータが変更できないようにこれをフリーズします。

説明

ComponentMetaData.frozen? を true に設定します。


load-component-from (メソッド)
public final {ComponentSelector.load-component-from
locator:ComponentLocator,
accept-loader?:{proc-type {ComponentLoader}:bool} = ComponentSelector.accept-loader
}:(component:#Component, reject-count:int)

locator を使用して、このセレクタのコンポーネントを検索してロードします。

説明

ComponentSelector.select-loader-from を使用して、コンポーネントのローダーを取得してこれを使用してコンポーネントをロードします。


location-matches? (メソッド)
public sealed {ComponentSelector.location-matches?}:(match?:bool, first-non-match:#String)

メタデータと場所のヒントが other に一致するかどうかを示します。

戻り値

一致したかどうかを示す bool、および一致しない最初のメタデータの値の名前。場所のヒントと一致しなかった場合、この名前は "location" になります。

説明

ComponentMetaData.matches? を呼び出し、true の場合は other に対して場所のヒントを照合します。一致するには、場所のヒントの 1 つが othersource-url-name か、または origin-url-names の 1 つと一致する必要があります。


select (メソッド)
public final {ComponentSelector.select
loaders:{Array-of ComponentLoader},
accept-loader?:{proc-type {ComponentLoader}:bool} = ComponentSelector.accept-loader
}:(loader:#ComponentLoader, reject-count:int)

優先されるコンポーネント ローダーをリストから選択します。

loaders: 選択する ComponentLoader のリスト。通常このリストは、このセレクタで ComponentLocator.locate-components-with を呼び出した結果です。

戻り値

優先されるコンポーネント ローダー。loaders が空の場合は null

説明

ローダーのメタデータで compare を使用して、優先されるローダーを決定します。2 つのローダーの優先順位が同じ場合、リストで最初に登場するものが優先されます。このメソッドは、準備が完了していないローダーは選択しません (ComponentLoader.ready? を参照してください)。


select-loader-from (メソッド)
public final {ComponentSelector.select-loader-from
locator:ComponentLocator,
accept-loader?:{proc-type {ComponentLoader}:bool} = ComponentSelector.accept-loader
}:(loader:#ComponentLoader,reject-count:int)

locator から優先される ComponentLoader を選択します。

説明

このセレクタで ComponentLocator.locate-components-with を使用してローダーのリストを検索し、ComponentSelector.select を使用して優先されるローダーを選択して返します。

一致するものが見つからない場合は null を返します。