{Set-of t:Type, key-hash-proc:any = value-hash, key-equality-proc:any = equal? } (クラス)
public serializable Set-of {inherits {Aggregate-of t}}
パッケージ: CURL.LANGUAGE.CONTAINERS

セットの抽象パラメータ化クラス。

t: セット内の要素のデータ型。
key-hash-proc: 要素のハッシュ値を返すプロシージャ。このプロシージャはセット内の要素と同じデータ型 (t) を持つ 2 つのパラメータを指定できます。このプロシージャは int を返します。

key-hash-prockey-equality-proc には、相互に一貫性のある意味を持たせる必要があります。2 つの要素に対する key-equality-proc への呼び出しが true を返す場合、2 つの要素それぞれに対する key-hash-proc の呼び出しは、同じハッシュ値を生成する必要があります。

既定で、このパラメータには value-hash 値が設定されています。
key-equality-proc: 2 つのキーが等しいかどうかを判断するプロシージャ。このプロシージャにはセットの要素と同じデータ型 (t) を持つ 2 つのパラメータを指定できます。このプロシージャは bool を返します。2 つの要素が等しい場合、このプロシージャは true を返します。それ以外の場合は、false を返します。

key-hash-prockey-equality-proc には、相互に一貫性のある意味を持たせる必要があります。2 つのキーに対する key-equality-proc への呼び出しがtrue を返す場合、2 つのキーそれぞれに対する key-hash-proc への呼び出しは、同じハッシュ値を生成する必要があります。

既定で、このパラメータには equal? 値が設定されています。

説明

Curl 言語には、以下のようなコレクション タイプが組み込まれています。



セットは、要素の順序付けられていないコレクションです。セットの要素はインデックスまたはキーを持ちません。要素にアクセスするには、要素自身を使用します。要素には、任意の有効なデータ型を設定できます。

Curl では、セットはハッシュ テーブル内のキーハッシュ メカニズムを使用して、要素の格納および検索を行います。そのため、クラスは key-hash-proc および key-equality-proc などのパラメータを使用します。

注意事項

Curl のコレクションクラスの部分階層は次のようになります。
Curl のコレクションの詳細は、Curl 開発者ガイド: コレクションを参照してください。

注意事項

コレクションを反復処理中にコレクションの内容を変更することは出来ません。

コンストラクタ
clone-from:Set-of を初期化します。
コンストラクタ public {Set-of.clone-from
from:{Set-of t, key-hash-proc = key-hash-proc, key-equality-proc = key-equality-proc }
}
default:Set-of を初期化します。
コンストラクタ public {Set-of.default efficient-size:int = 4, ...:t}
object-deserialize:
コンストラクタ public {Set-of.object-deserialize in:SerializeInputStream}

プロパティ
efficient-size:selfefficient-size を取得または設定します。
アクセサ public Set-of.efficient-size:int
セッター public Set-of.efficient-size:int
empty?:コレクションが空かどうかを調べます。
アクセサ public Set-of.empty?:bool
size:コレクションの要素数。
アクセサ public Set-of.size:int
プロパティ 継承 Aggregate-of: element-type

メソッド
clear:すべての要素を削除します。
public {Set-of.clear}:void
clone:コレクションのクローンを返します。
public {Set-of.clone
}:{Set-of t, key-hash-proc = key-hash-proc, key-equality-proc = key-equality-proc }
difference:1 つのセットとその他の複数のセットの間の差を形成します。
public {Set-of.difference
...:{Set-of t, key-hash-proc = key-hash-proc, key-equality-proc = key-equality-proc }
}:void
difference-clone:2 つ以上のセット間の差を含むクローンを返します。
public {Set-of.difference-clone
...:{Set-of t, key-hash-proc = key-hash-proc, key-equality-proc = key-equality-proc }
}:{Set-of t, key-hash-proc = key-hash-proc, key-equality-proc = key-equality-proc }
equal?:2つのセットが等しいかどうかを判断します。
public {Set-of.equal?
s2:{Set-of t, key-hash-proc = key-hash-proc, key-equality-proc = key-equality-proc }
}:bool
filter:要素をフィルタリングします。
public {Set-of.filter p:{proc-type {t}:bool}}:void
filter-clone:要素が選別された、コレクションのクローンを返します。
public {Set-of.filter-clone
p:{proc-type {t}:bool}
}:{Set-of t, key-hash-proc = key-hash-proc, key-equality-proc = key-equality-proc }
get-member:特定の要素に等しいセット内の要素を返します。
public {Set-of.get-member e:t}:t
get-member-if-exists:特定の要素に等しいセット内の要素、および示された要素が見つかったかどうかを示すブール値を返します。
public {Set-of.get-member-if-exists e:t}:(value:t, found?:bool)
insert:要素を追加します。
public {Set-of.insert e:t, error-if-present?:bool = false}:void
insert-clone:要素が 1 つ追加された、セットのクローンを返します。
public {Set-of.insert-clone
e:t,
error-if-present?:bool = false
}:{Set-of t, key-hash-proc = key-hash-proc, key-equality-proc = key-equality-proc }
intersection:2 つ以上のセットの交点を形成します。
public {Set-of.intersection
...:{Set-of t, key-hash-proc = key-hash-proc, key-equality-proc = key-equality-proc }
}:void
intersection-clone:2 つ以上のセットの交点を含むクローンを返します。
public {Set-of.intersection-clone
...:{Set-of t, key-hash-proc = key-hash-proc, key-equality-proc = key-equality-proc }
}:{Set-of t, key-hash-proc = key-hash-proc, key-equality-proc = key-equality-proc }
member?:要素がセットに含まれているかどうかを判断します。
public {Set-of.member? e:t}:bool
object-serialize:クラス インスタンスが書き込まれるときに、シリアル化コードで呼び出されます。
public {Set-of.object-serialize out:SerializeOutputStream}:void
remove:要素を削除します。
public {Set-of.remove e:t, error-if-missing?:bool = true}:void
remove-clone:要素が 1 つ削除された、セットのクローンを返します。
public {Set-of.remove-clone
e:t,
error-if-missing?:bool = true
}:{Set-of t, key-hash-proc = key-hash-proc, key-equality-proc = key-equality-proc }
to-Iterator:コレクションの各要素を含む Iterator-of を返します。
public {Set-of.to-Iterator}:{Iterator-of t}
union:2 つ以上のセットの結合を形成します。
public {Set-of.union
...:{Set-of t, key-hash-proc = key-hash-proc, key-equality-proc = key-equality-proc }
}:void
union-clone:2 つ以上のセットの結合を含むクローンを返します。
public {Set-of.union-clone
...:{Set-of t, key-hash-proc = key-hash-proc, key-equality-proc = key-equality-proc }
}:{Set-of t, key-hash-proc = key-hash-proc, key-equality-proc = key-equality-proc }
メソッド 継承 Object: object-describe, object-describe-for-debugging



コンストラクタ詳細
clone-from (コンストラクタ)
public {Set-of.clone-from
from:{Set-of t, key-hash-proc = key-hash-proc, key-equality-proc = key-equality-proc }
}

Set-of を初期化します。

from: self の初期の内容は from からコピーされます。


default (コンストラクタ)
public {Set-of.default efficient-size:int = 4, ...:t}

Set-of を初期化します。

efficient-size: Set-of を構成する基本データ構造の推奨サイズ。Curl コンパイラは、 Set-of のタイプおよびその他の内部的な意味に基づいて調整します。この値を少しでも変更すると、より大きい値に合わせて調整されます。 efficient-size を指定せず、かつ残余引数が存在する場合、Curl コンパイラは efficient-size に残余引数の数に基づいた適切な値を設定します。 efficient-size を指定せずに、残余引数が存在しない場合、Curl コンパイラで、efficient-size が要素のデータ型とコードを実行するプラットフォームに適したサイズに設定されます。
...: 残余引数は、セット内で最初に配置する要素です。連続する要素は、カンマで区切ります。

説明

新しい Set-of オブジェクトを初期化します。残余引数を提供する場合、それらをセットの初期要素として追加します。セットは重複する要素を持つことができません。セットに重複する要素を追加しようとすると、1 つの要素コピーのみが追加され、それ以外の要素は破棄されます。


object-deserialize (コンストラクタ)
public {Set-of.object-deserialize in:SerializeInputStream}
この項目はサポートされていません。内部使用限定となっています。



プロパティ詳細
efficient-size (アクセサ)
アクセサ public Set-of.efficient-size:int
セッター public Set-of.efficient-size:int

selfefficient-size を取得または設定します。

説明

コレクションに設定される efficient-size は、コレクションを拡張可能なサイズで、なお 効率的に機能するサイズです。このアクセッサは実装ごとに定義されますが、一般に下位のデータ構造のサイズを反映します。割り当てサイズを超えて拡張する場合、下位のデータ構造を新しく割り当て、古いデータ構造からデータをコピーする必要があります。ただし、この処理は 効率的でない と見なされます。
requested-size: requested-size は、コレクション型およびコレクションの中に格納されたタイプが与えられると、システムによって評価され、また変更される場合もあります。ゲッターから獲得した際、結果の efficient-size は、requested-size 以上の値になります。

注意事項

Set-of で定義された既定の実装では、セッターは無視され、ゲッターは max-int を返します。


empty? (アクセサ)
アクセサ public Set-of.empty?:bool

コレクションが空かどうかを調べます。

戻り値

bool 値。self に要素がない場合、true を返します。それ以外の場合は、false を返します。

次の例は、要素を持たないセットを示しています。


{value
    || Declare and initialize an empty set.
    let my-set:{Set-of String} =
        {new {Set-of String}}

    || Check if the set is empty and display an
    || appropriate message.
    {if my-set.empty? then
        {text The set is empty!}
     else
        {text The set has elements!}
    }
}


次の例は、要素を持つセットを示しています。


{value
    || Declare and initialize a set with elements.
    let my-set:{Set-of String} =
        {new {Set-of String}, "apple"}

    || Check if the set is empty and display an
    || appropriate message.
    {if my-set.empty? then
        {text The set is empty!}
     else
        {text The set has elements!}
    }
}

注意事項

これは Aggregate-of の抽象メソッドで、Aggregate-of のサブクラス内で実装されます。


size (アクセサ)
アクセサ public Set-of.size:int

コレクションの要素数。

戻り値

要素数を示す int

説明

self 内の要素数を返します。


例: セットの要素を数える
{value
    || Declare and initialize s (a set).
    let s:{Set-of String} =
        {new {Set-of String}, "apple", "banana", "cherry"}

    || Display the size of the set.
    s.size
}





メソッド詳細
clear (メソッド)
public {Set-of.clear}:void

すべての要素を削除します。


例: clear : セットを空にする
{value
    || Declare and initialize my-set (a set of strings).
    let my-set:{Set-of String} =
        {new {Set-of String}, "apple", "banana", "cherry"}

    || Clear the set.
    {my-set.clear}

    || Check if the set is empty.
    {text The assertion that the set is empty is...
        {value my-set.empty?}}
}


clone (メソッド)
public {Set-of.clone
}:{Set-of t, key-hash-proc = key-hash-proc, key-equality-proc = key-equality-proc }

コレクションのクローンを返します。

戻り値

Aggregate-of のサブクラスのインスタンス。オブジェクトは、self と同じデータ型およびデータを持ちます。

説明

クローンは、self と同じデータ型を持つ新しいオブジェクトです。クローンには、self の要素の簡易コピー(shallow copy) が含まれます。つまり、どちらかのコレクションの要素に新しいオブジェクトを代入すると、もう一方の一致した要素は元のオブジェクトを参照します。ただし、要素のオブジェクトを変更すると、両方のコレクションは変更したオブジェクトを参照します。


{value
    || Declare and initialize set-1 (the original set).
    let set-1:{Set-of String} =
        {new {Set-of String}, "apple", "banana", "cherry"}

    || Initialize set-2 with a clone of the contents of
    || set-1.
    let set-2:{Set-of String} = {set-1.clone}

    || Use a VBox to display the contents of set-2.
    || Iterate over the contents of set-2, adding them
    || to the VBox.  Then display the VBox.
    let message:VBox = {VBox}
    {for each-element:String in set-2 do
        {message.add each-element}
    }
    message
}

注意事項

これは Aggregate-of の抽象メソッドで、Aggregate-of のサブクラス内で実装されます。

注意事項

クローンの詳細については、『Curl 開発者ガイド』の「コレクション」で、使用しているコレクションのクローンに関するセクションを参照してください。


difference (メソッド)
public {Set-of.difference
...:{Set-of t, key-hash-proc = key-hash-proc, key-equality-proc = key-equality-proc }
}:void

1 つのセットとその他の複数のセットの間の差を形成します。

...: 残余引数は、差の形成元となるセットを指定します。引数リスト内では、連続するセットをコンマで区切ります。各引数は、self と同じデータ型を持つ必要があります。そうでない場合、このメソッドはエラーをスローします。

説明

self 内の要素と残余引数に一覧されるセット内の要素の間の差を形成します。この差は、残余引数に一覧される任意のセットに表示されない self 内の要素のセットから構成されます。基本的に、このメソッドは、その他のセットに表示される self の要素を削除します。


例: difference:二つ以上のセットの相違を形成する
{value
    || Declare and initialize set-1 (a set).
    let set-1:{Set-of String} =
        {new {Set-of String}, "apple", "banana", "cherry"}

    || Declare and initialize set-2 (a set).
    let set-2:{Set-of String} =
        {new {Set-of String}, "apple", "plum", "peach"}

    || Form the difference between the elements of
    || set-1 and set-2.
    {set-1.difference set-2}

    || Use a VBox to display the contents of set-1.
    || Iterate over the contents of set-1, adding them
    || to the VBox.  Then display the VBox.
    let message:VBox = {VBox}
    {for each-element:String in set-1 do
        {message.add each-element}
    }
    message
}


difference-clone (メソッド)
public {Set-of.difference-clone
...:{Set-of t, key-hash-proc = key-hash-proc, key-equality-proc = key-equality-proc }
}:{Set-of t, key-hash-proc = key-hash-proc, key-equality-proc = key-equality-proc }

2 つ以上のセット間の差を含むクローンを返します。

...: 残余引数は、差の形成元となるセットを指定します。連続するセットは、カンマで区切ります。各引数は、self と同じデータ型を持つ必要があります。そうでない場合、このメソッドはエラーをスローします。

戻り値

Set-of のインスタンス。オブジェクトは、self と同じデータ型を持ちます。

説明

self 内の要素と残余引数に一覧されるセット内の要素の間の差を構成するクローンを返します。この差は、残余引数に一覧される任意のセットに表示されない self 内の要素のセットから構成されます。

このメソッドは、selfSet-of.clone メソッドを呼び出します。次に、このメソッドは、クローンの Set-of.difference メソッドを呼び出します。


例: difference-clone を使用してNセットの相違を含む新しいセットを形成する。
{value
    || Declare and initialize set-1 (a set).
    let set-1:{Set-of String} =
        {new {Set-of String}, "apple", "banana", "cherry"}

    || Declare and initialize set-2 (a set).
    let set-2:{Set-of String} =
        {new {Set-of String}, "apple", "plum", "peach"}

    || Initialize set-3 with a clone of the contents
    || of set-1 intersected with the elements of
    || set-2.
    let set-3:{Set-of String} = {set-1.difference-clone set-2}

    || Use a VBox to display the contents of set-3.
    || Iterate over the contents of set-3, adding them
    || to the VBox.  Then display the VBox.
    let message:VBox = {VBox}
    {for each-element:String in set-3 do
        {message.add each-element}
    }
    message
}

注意事項

クローンの詳細については、『Curl 開発者ガイド』の「コレクション:セット」のクローンに関するセクションを参照してください。


equal? (メソッド)
public {Set-of.equal?
s2:{Set-of t, key-hash-proc = key-hash-proc, key-equality-proc = key-equality-proc }
}:bool

2つのセットが等しいかどうかを判断します。

s2: self の比較対象となる Set

戻り値

セットが等しいかどうかを示す bool。セットが等しい場合、true を返します。それ以外の場合、false を返します。

説明

2 つのセットが等しいとみなされるのは、以下のような場合です。


例: セットが同等であるかどうかテストする
|| Declare and initialize set-1 and set-2, two sets
|| with identical contents.
{let set-1:{Set-of String} =
    {new {Set-of String}, "apple", "banana", "cherry"}
}
{let set-2:{Set-of String} =
    {new {Set-of String}, "apple", "banana", "cherry"}
}

|| Output a message indicating if set-1 and set-2
|| are equal.
The assertion that the sets are equal is...
{set-1.equal? set-2}

|| Remove an element from set-1.
{set-1.remove "banana"}

|| Output a message indicating if set-1 and set-2 are
|| equal
After removing an element, the assertion is...
{set-1.equal? set-2}


filter (メソッド)
public {Set-of.filter p:{proc-type {t}:bool}}:void

要素をフィルタリングします。

p: 要素をフィルタリングするプロシージャ。このメソッドは、self の各要素に対して p を呼び出します。プロシージャには、self の要素と同じデータ型を持つ 1 つの引数を指定する必要があります。プロシージャは、このメソッドが要素をフィルタリングするかどうかを示す bool 値を返す必要があります。pfalse を返す場合、このメソッドは self からその要素をフィルタリング (削除) します。ptrue を返す場合、要素は、self 内に残ります。

戻り値

このメソッドは値を返しません。

説明

p への呼び出しが false を返すコレクションの要素を削除します。

次の例では、コレクションから要素をフィルタリングします。


{value
    || Declare and initialize my-set (a set of strings).
    let my-set:{Set-of String} =
        {new {Set-of String}, "apple", "banana", "cherry"}

    || Filter elements that begin with the
    || letter 'a'.
    {my-set.filter
        {proc {str:String}:bool
            {return str[0] != 'a'}
        }
    }

    || Use a VBox to display the contents of my-set.
    || Iterate over the contents of my-set, adding them
    || to the VBox.  Then display the VBox.
    let message:VBox = {VBox}
    {for each-element:String in my-set do
        {message.add each-element}
    }
    message
}

注意事項

これは Aggregate-of の抽象メソッドで、Aggregate-of のサブクラス内で実装されます。


filter-clone (メソッド)
public {Set-of.filter-clone
p:{proc-type {t}:bool}
}:{Set-of t, key-hash-proc = key-hash-proc, key-equality-proc = key-equality-proc }

要素が選別された、コレクションのクローンを返します。

p: 要素をフィルタリングするプロシージャ。このメソッドは、self の各要素に対して p を呼び出します。プロシージャには、self の要素と同じデータ型を持つ 1 つの引数を指定する必要があります。プロシージャは、このメソッドが要素をフィルタリングするかどうかを示す bool 値を返す必要があります。pfalse を返す場合、このメソッドはその要素をフィルタリング(削除)します。ptrue を返す場合、要素は残ります。

戻り値

Aggregate-of のサブクラスのインスタンス。オブジェクトは、self と同じデータ型を持ちます。オブジェクトには、いくつかの要素がフィルタリングされた、コレクションのクローンが含まれます。

説明

このメソッドは、self のクローンを返します。クローンでは、p プロシージャへの呼び出しが false を返す要素が削除されます。クローンとは、self と同じデータ型を持つ新しいオブジェクトです。クローンには、self の浅い要素のコピー(shallow copy) が含まれます。つまり、どちらかの集合の要素に新しいオブジェクトを代入すると、もう一方の一致した要素は元のオブジェクトを参照します。ただし、要素のオブジェクトを変更すると、両方の集合は変更したオブジェクトを参照します。

次の例は、先頭に文字 a が付くすべての要素が選別されたセットのクローンを作成します。


{value
    || Declare and initialize set-1 (a set).
    let set-1:{Set-of String} =
        {new {Set-of String}, "apple", "banana", "cherry"}

    || Create a clone set-2 that contains the elements
    || of set-1 with strings that begin with the letter
    || 'a' filtered out.
    let set-2:{Set-of String} =
        {set-1.filter-clone
            {proc {str:String}:bool
                {return str[0] != 'a'}
            }
        }

    || Use a VBox to display the contents of set-2.
    || Iterate over the contents of set-2, adding them
    || to the VBox.  Then display the VBox.
    let message:VBox = {VBox}
    {for each-element:String in set-2 do
        {message.add each-element}
    }
    {value message}
}

注意事項

これは Aggregate-of の抽象メソッドで、Aggregate-of のサブクラス内で実装されます。

注意事項

クローンの詳細については、『Curl 開発者ガイド』の「コレクション」で、使用しているコレクションのクローンに関するセクションを参照してください。


get-member (メソッド)
public {Set-of.get-member e:t}:t

特定の要素に等しいセット内の要素を返します。

e: 取り出す要素の値。この値は、selfの要素と同じデータ型を持つ必要があります。

戻り値

取得する要素。戻り値は self の要素と同じデータ型を持ちます。

説明

e パラメータが self 内のメンバである場合、要素を返します。


例: get-member: 要素がセットの中に入っているかどうかのチェック
|| Declare and initialize a set with String members
{let fruit:{Set-of String} =
    {new {Set-of String}, "apple", "banana", "cherry"}
}

|| Use the get-member method to check for the presence
|| of elements.
The set contains the following members...
  {fruit.get-member "apple"}
  {fruit.get-member "banana"}
  {fruit.get-member "cherry"}

注意事項

適切な要素が見つからない場合、get-memberKeyNotFoundException をスローします。


get-member-if-exists (メソッド)
public {Set-of.get-member-if-exists e:t}:(value:t, found?:bool)

特定の要素に等しいセット内の要素、および示された要素が見つかったかどうかを示すブール値を返します。

e: 取り出す要素の値。この値は、selfの要素と同じデータ型を持つ必要があります。

戻り値

取得する要素。戻り値は、self の要素と同じデータ型を持ち、e に等しくなります。

また、要素が見つかったかどうかを示すブール値を返します。

説明

e パラメータが self 内のメンバである場合、要素を返します。


例: get-member-if-exists を使ってセットの要素を返す
|| Declare and initialize a set with String members
{let fruit:{Set-of String} =
    {new {Set-of String}, "apple", "banana", "cherry"}
}

|| Use the get-member-if-exists method to check for the presence
|| of elements.
The set contains the following members...
  {fruit.get-member-if-exists "apple"}
  {fruit.get-member-if-exists "banana"}
  {fruit.get-member-if-exists "pear"}
  {fruit.get-member-if-exists "cherry"}
  {fruit.get-member-if-exists "orange"}


insert (メソッド)
public {Set-of.insert e:t, error-if-present?:bool = false}:void

要素を追加します。

e: 追加する要素。このパラメータは、self 内の要素と同じデータ型を持つ必要があります。同じデータ型を持たない場合、このメソッドはエラーをスローします。
error-if-present?: そのセットがこの要素を既に含む場合にエラーをスローするかどうかを指定します。

説明

eself に追加します。selfe と同じ値を持つ要素が含まれていた場合、このメソッドでは何のアクションも実行されません。


例: insert を使用し、セットの要素を追加する
{value
    || Declare and initialize my-set (a set).
    let my-set:{Set-of String} =
        {new {Set-of String}, "apple", "banana", "cherry"}

    || Add an element
    {my-set.insert "orange"}

    || Use a VBox to display the contents of my-set.
    || Iterate over the contents of my-set, adding them
    || to the VBox.  Then display the VBox.
    let message:VBox = {VBox}
    {for each-element:String in my-set do
        {message.add each-element}
    }
    message
}


insert-clone (メソッド)
public {Set-of.insert-clone
e:t,
error-if-present?:bool = false
}:{Set-of t, key-hash-proc = key-hash-proc, key-equality-proc = key-equality-proc }

要素が 1 つ追加された、セットのクローンを返します。

e: 追加する要素。このパラメータは、self 内の要素と同じデータ型を持つ必要があります。そうでない場合、このメソッドはエラーをスローします。
error-if-present?: ユーザーがすでに存在するメンバを追加しようとしたときにこのメソッドがエラーを生成するかどうかを示すブール値のフラグ。error-if-present?true の場合、すでに存在するメンバを追加しようとすると、このメソッドはエラーをスローします。エラーが発生するとプログラムの実行が停止し、エラー メッセージが表示されます。既定では、error-if-present?true です。error-if-present?false の場合、このメソッドはエラーを生成しません。error-if-present? キーワード引数。error-if-present?を指定するには、メソッド呼び出し内のキーワードに必要な値 (例:error-if-present?=false) を代入するようにします。

戻り値

Set-of のインスタンス。オブジェクトは、self と同じデータ型およびデータを持ちます。オブジェクトには 1 つの要素が追加されています。

説明

要素が 1 つ追加された、元のコレクションのクローンを返します。このメソッドは、selfSet-of.clone メソッドを呼び出します。次に、このメソッドはクローンの Set-of.insert メソッドを呼び出し、そのクローンに e を追加します。selfe と同じ値を持つ要素が含まれていた場合、このメソッドでは何のアクションも実行されません。


例: insert-clone を使用してセットをクローンし、要素を一つ追加する
{value
    || Declare and initialize set-1 (a set).
    let set-1:{Set-of String} =
        {new {Set-of String}, "apple", "banana", "cherry"}

    || Initialize set-2 with a clone of the contents
    || of set-1, adding the "peach" element.
    let set-2:{Set-of String} = {set-1.insert-clone "peach"}

    || Use a VBox to display the contents of set-2.
    || Iterate over the contents of set-2, adding them
    || to the VBox.  Then display the VBox.
    let message:VBox = {VBox}
    {for each-element:String in set-2 do
        {message.add each-element}
    }
    message
}

注意事項

クローンの詳細については、『Curl 開発者ガイド』の「コレクション:セット」のクローンに関するセクションを参照してください。


intersection (メソッド)
public {Set-of.intersection
...:{Set-of t, key-hash-proc = key-hash-proc, key-equality-proc = key-equality-proc }
}:void

2 つ以上のセットの交点を形成します。

...: 残余引数は、交点の形成元となるセットを指定します。連続するセットは、カンマで区切ります。各引数は、self と同じデータ型を持つ必要があります。そうでない場合、このメソッドはエラーをスローします。

説明

以下の交点を形成します。



交点は、すべてのセットにある要素のセットで構成されます。self 要素の交点を保持します。基本的に、このメソッドは、その他のセットに表示されない self の要素を削除します。


例: intersection: 二つ以上のセットの倫理 AND を戻す
{value
    || Declare and initialize set-1 (a set).
    let set-1:{Set-of String} =
        {new {Set-of String}, "apple", "banana", "cherry"}

    || Declare and initialize set-2 (a set).
    let set-2:{Set-of String} =
        {new {Set-of String}, "apple", "plum", "peach"}

    || In set-1, form the intersection of the elements
    || in set-1 and set-2.
    {set-1.intersection set-2}

    || Use a VBox to display the contents of set-1.
    || Iterate over the contents of set-1, adding them
    || to the VBox.  Then display the VBox.
    let message:VBox = {VBox}
    {for each-element:String in set-1 do
        {message.add each-element}
    }
    message
}


intersection-clone (メソッド)
public {Set-of.intersection-clone
...:{Set-of t, key-hash-proc = key-hash-proc, key-equality-proc = key-equality-proc }
}:{Set-of t, key-hash-proc = key-hash-proc, key-equality-proc = key-equality-proc }

2 つ以上のセットの交点を含むクローンを返します。

...: 残余引数は、交点の形成元となるセットを指定します。連続するセットは、カンマで区切ります。各引数は、self と同じデータ型を持つ必要があります。そうでない場合、このメソッドはエラーをスローします。

戻り値

Set-of のインスタンス。オブジェクトは、self と同じデータ型を持ちます。

説明

以下の交点から成るクローンを返します。



交点は、すべてのセットに含まれる要素のセットで構成されます。

このメソッドは、selfSet-of.clone メソッドを呼び出します。次に、このメソッドはクローンの Set-of.intersection メソッドを呼び出します。


例: intersection-clone: N セットの AND を含む新しいセットを作る
{value
    || Declare and initialize set-1 (a set).
    let set-1:{Set-of String} =
        {new {Set-of String}, "apple", "banana", "cherry"}

    || Declare and initialize set-2 (a set).
    let set-2:{Set-of String} =
        {new {Set-of String}, "apple", "plum", "peach"}

    || Initialize set-3 with a clone of the contents
    || of set-1 intersected with the elements of
    || set-2.
    let set-3:{Set-of String} = {set-1.intersection-clone set-2}

    || Use a VBox to display the contents of set-3.
    || Iterate over the contents of set-3, adding them
    || to the VBox.  Then display the VBox.
    let message:VBox = {VBox}
    {for each-element:String in set-3 do
        {message.add each-element}
    }
    message
}

注意事項

クローンの詳細については、『Curl 開発者ガイド』の「コレクション:セット」のクローンに関するセクションを参照してください。


member? (メソッド)
public {Set-of.member? e:t}:bool

要素がセットに含まれているかどうかを判断します。

e: self 内で検索対象となる要素。このパラメータは、self の要素と同じデータ型を持つ必要があります。そうでない場合、このメソッドはエラーをスローします。

戻り値

要素が self 内に含まれるかどうかを示すbooleself 内の要素である場合、true を返します。それ以外の場合、false を返します。


例: 要素がセットのメンバーかどうかを判断する
|| Declare and initialize s (a set).
{let s:{Set-of String} =
    {new {Set-of String}, "apple", "banana", "cherry"}
}

|| Output a message indicating if "banana" is an
|| element of s.
The assertion that {italic banana} is in the set is ...
{s.member? "banana"}

|| Remove the element "banana" from s.
{s.remove "banana"}

|| Output a message indicating if "banana" is an
|| element is s.
After removing the element, the assertion is...
{s.member? "banana"}


object-serialize (メソッド)
public {Set-of.object-serialize out:SerializeOutputStream}:void

クラス インスタンスが書き込まれるときに、シリアル化コードで呼び出されます。

out: このメソッドを呼び出した SerializeOutputStream

説明

このメソッドは、次のステップを順番に実行する必要があります。
  1. SerializeOutputStream.write-class-version を呼び出します。通常は引数にゼロ (0) を指定します。
  2. シリアル化可能なスーパークラスごとに super.object-serialize を呼び出します。
  3. シリアル化された状態を out に書き込みます。これは通常、フィールドごとに SerializeOutputStream.write-one を呼び出すことによって実行されます。

注意事項

このメソッドは、シリアル化可能なサブクラスでのみ定義する必要があります。


remove (メソッド)
public {Set-of.remove e:t, error-if-missing?:bool = true}:void

要素を削除します。

e: 削除する要素。このパラメータは、self 内の要素と同じデータ型を持つ必要があります。そうでない場合、このメソッドはエラーをスローします。
error-if-missing?: ユーザーが存在しない要素を削除しようとしたときにこのメソッドがエラーを生成するかどうかを示すブール値のフラグ。error-if-missing?true に設定した場合、存在しない要素を削除しようとするとエラーがスローされます。エラーが発生するとプログラムの実行が停止し、エラー メッセージが表示されます。既定では、error-if-missing?true です。error-if-missing?false の場合、このメソッドはエラーを生成しません。error-if-missing? キーワード引数。error-if-missing?を指定するには、メソッド呼び出し内のキーワードに必要な値 (例:error-if-missing?=false) を指定します。

説明

self から e を削除します。 eself のメンバでなく、 error-if-missing?true である場合、このメソッドはエラーをスローします。eself のメンバでなく、 error-if-missing?false である場合、このメソッドは何のアクションも実行しません。


例: セットの要素を削除するために remove を使用する
{value
    || Declare and initialize my-set (a set).
    let my-set:{Set-of String} =
        {new {Set-of String}, "apple", "banana", "cherry"}

    || Remove an element
    {my-set.remove "banana"}

    || Use a VBox to display the contents of my-set.
    || Iterate over the contents of my-set, adding them
    || to the VBox.  Then display the VBox.
    let message:VBox = {VBox}
    {for each-element:String in my-set do
        {message.add each-element}
    }
    message
}


remove-clone (メソッド)
public {Set-of.remove-clone
e:t,
error-if-missing?:bool = true
}:{Set-of t, key-hash-proc = key-hash-proc, key-equality-proc = key-equality-proc }

要素が 1 つ削除された、セットのクローンを返します。

e: 削除する要素。このパラメータは、self 内の要素と同じデータ型を持つ必要があります。そうでない場合、このメソッドはエラーをスローします。
error-if-present?: ユーザーがすでに存在するメンバを追加しようとしたときにこのメソッドがエラーを生成するかどうかを示すブール値のフラグ。error-if-present?true の場合、すでに存在するメンバを追加しようとすると、このメソッドはエラーをスローします。エラーが発生するとプログラムの実行が停止し、エラー メッセージが表示されます。既定では、error-if-present?true です。error-if-present?false の場合、このメソッドはエラーを生成しません。error-if-present? キーワード引数。error-if-present?を指定するには、メソッド呼び出し内のキーワードに必要な値 (例:error-if-present?=false) を代入するようにします。

戻り値

Set-of のインスタンス。オブジェクトは、self と同じデータ型およびデータを持ちます。オブジェクトからは 1 つの要素が削除されています。

説明

要素が 1 つ削除された、元のコレクションのクローンを返します。このメソッドは、selfSet-of.clone メソッドを呼び出します。次に、このメソッドはクローンの Set-of.remove メソッドを呼び出し、そのクローンから e を削除します。


例: remove-clone を使用して[セット-1要素]をクローンする
{value
    || Declare and initialize set-1 (a set).
    let set-1:{Set-of String} =
        {new {Set-of String}, "apple", "banana", "cherry"}

    || Initialize set-2 with a clone of the contents
    || of set-1, removing the "banana" element.
    let set-2:{Set-of String} = {set-1.remove-clone "banana"}

    || Use a VBox to display the contents of set-2.
    || Iterate over the contents of set-2, adding them
    || to the VBox.  Then display the VBox.
    let message:VBox = {VBox}
    {for each-element:String in set-2 do
        {message.add each-element}
    }
    message
}

注意事項

クローンの詳細については、『Curl 開発者ガイド』の「コレクション:セット」のクローンに関するセクションを参照してください。


to-Iterator (メソッド)
public {Set-of.to-Iterator}:{Iterator-of t}

コレクションの各要素を含む Iterator-of を返します。

戻り値

self 内の要素と同じパラメータ化データ型を持つ Iterator-of。つまり、self{Aggregate-of int} の場合、このメソッドは {Iterator-of int} を返します。

説明

Iterator-of の要素の順序は、コレクション型に依存します。配列などの順序付けられたコレクションの場合、このメソッドはその順序を保存します。ハッシュ テーブルやセットなどの順序づけられていないコレクションの場合、要素の順序は任意に指定できます。


{value
    || Create a new set.
    let my-set:{Set-of String} =
        {new {Set-of String}, "apple", "banana", "cherry"}

    || Create an Iterator-of from the set.
    let my-iterator:{Iterator-of String} = {my-set.to-Iterator}

    || Use a VBox to display the contents of my-iterator.
    || Iterate over the contents of my-iterator, adding
    || them to the VBox.  Then display the VBox.
    let message:VBox = {VBox}
    {for each-element:String in my-iterator do
        {message.add each-element}
    }
    message
}

注意事項

for コンテナ ループを使って同じ結果を得ることもできます。ただし、この反復処理メカニズムをオーバーライドすると、予期外の結果が生じる可能性があるので、可能な限り for ループを使用してください。

注意事項

これは Aggregate-of の抽象メソッドで、Aggregate-of のサブクラス内で実装されます。


union (メソッド)
public {Set-of.union
...:{Set-of t, key-hash-proc = key-hash-proc, key-equality-proc = key-equality-proc }
}:void

2 つ以上のセットの結合を形成します。

...: 残余引数は、結合の形成元となるセットを指定します。連続する引数はカンマで区切ります。各引数は、self と同じデータ型を持つ必要があります。そうでない場合、このメソッドはエラーをスローします。

説明

以下の結合を形成します。



結合は、各セットに含まれる各要素のセットで構成されます。要素が複数のセットに表示されたとしても、要素は結合に 1 度しか表示されません。self は、要素の結合を保持します。


例: 2 つ以上のセットのOR値を union を使用して形成する
{value
    || Declare and initialize set-1 (a set).
    let set-1:{Set-of String} =
        {new {Set-of String}, "apple", "banana", "cherry"}

    || Declare and initialize set-2 (a set).
    let set-2:{Set-of String} =
        {new {Set-of String}, "apple", "plum", "peach"}

    || In set-1, form the union of the elements in
    || set-1 and set-2.
    {set-1.union set-2}

    || Use a VBox to display the contents of set-1.
    || Iterate over the contents of set-1, adding them
    || to the VBox.  Then display the VBox.
    let message:VBox = {VBox}
    {for each-element:String in set-1 do
        {message.add each-element}
    }
    message
}


union-clone (メソッド)
public {Set-of.union-clone
...:{Set-of t, key-hash-proc = key-hash-proc, key-equality-proc = key-equality-proc }
}:{Set-of t, key-hash-proc = key-hash-proc, key-equality-proc = key-equality-proc }

2 つ以上のセットの結合を含むクローンを返します。

...: 残余引数は、結合の形成元となるセットを指定します。連続するセットは、カンマで区切ります。各引数は、self と同じデータ型を持つ必要があります。そうでない場合、このメソッドはエラーをスローします。

戻り値

Set-of のインスタンス。オブジェクトは、self と同じデータ型を持ちます。

説明

以下の結合から成るクローンを返します。



結合は、各セットに含まれる各要素のセットで構成されます。要素が複数のセットに表示されたとしても、その要素は結合に 1 度しか表示されません。

このメソッドは、selfSet-of.clone メソッドを呼び出します。次に、このメソッドはクローンの Set-of.union メソッドを呼び出します。


例: union-clone: N 個のセットの結合のクローンを形成する
{value
    || Declare and initialize set-1 (a set).
    let set-1:{Set-of String} =
        {new {Set-of String}, "apple", "banana", "cherry"}

    || Declare and initialize set-2 (a set).
    let set-2:{Set-of String} =
        {new {Set-of String}, "apple", "plum", "peach"}

    || Initialize set-3 with a clone of the contents
    || of set-1 unioned with the elements of set-2.
    let set-3:{Set-of String} = {set-1.union-clone set-2}

    || Use a VBox to display the contents of set-3.
    || Iterate over the contents of set-3, adding them
    || to the VBox.  Then display the VBox.
    let message:VBox = {VBox}
    {for each-element:String in set-3 do
        {message.add each-element}
    }
    message
}

注意事項

クローンの詳細については、『Curl 開発者ガイド』の「コレクション:セット」のクローンに関するセクションを参照してください。