associatedtype ArrayLiteralElement
Overview 概要
An array literal is a simple way of expressing a list of values. Simply surround a comma-separated list of values, instances, or literals with square brackets to create an array literal. You can use an array literal anywhere an instance of an Expressible
type is expected: as a value assigned to a variable or constant, as a parameter to a method or initializer, or even as the subject of a nonmutating operation like map(_:)
or filter(_:)
.
配列リテラルは、値のリストを表す簡単な方法です。単にコンマ区切りの値、インスタンス、またはリテラルを角括弧で囲むことで、配列リテラルを作成してください。あなたは配列リテラルをExpressible
型が予期されるところはどこででも使うことができます:変数や定数に割り当てられる値として、メソッドやイニシャライザへのパラメータとして、またはmap(_:)
やfilter(_:)
のような非変更の操作のサブジェクトとしてさえも。
Arrays, sets, and option sets all conform to Expressible
, and your own custom types can as well. Here’s an example of creating a set and an array using array literals:
配列、集合、またはオプションセットは、すべてExpressible
に準拠します、そしてあなた独自のあつらえの型もまたそうできます。ここに配列リテラルを使って集合と配列を作成する例があります:
The Set
and Array
types each handle array literals in their own way to create new instances. In this case, the newly created set drops the duplicate value (“Dave”) and doesn’t maintain the order of the array literal’s elements. The new array, on the other hand, matches the order and number of elements provided.
Set
とArray
型は、それぞれ配列リテラルをそれら独自の方法で取り扱って、新しいインスタンスを作成します。この場合において、新たに作成された集合は、重複した値(「Dave」)を落とします、そして配列リテラルのもつ要素の順番を維持しません。一方、新しい配列は、提供された要素の順番と数に合致します。
Note 注意
An array literal is not the same as an Array
instance. You can’t initialize a type that conforms to Expressible
simply by assigning an existing array.
配列リテラルは、Array
インスタンスと同じではありません。あなたは、既存の配列を割り当てることでExpressible
に準拠する型を初期化することはできません。
Type Inference of Array Literals 配列リテラルの型推論
Whenever possible, Swift’s compiler infers the full intended type of your array literal. Because Array
is the default type for an array literal, without writing any other code, you can declare an array with a particular element type by providing one or more values.
可能な時はいつでも、Swiftのコンパイラはあなたの配列リテラルの完全な意図される型を推論します。Array
は配列リテラルのための省略時の型なので、なんら他のコードを書くことなく、あなたはひとつ以上の値を提供することによって特定の要素型を持つ配列を宣言できます。
In this example, the compiler infers the full type of each array literal. この例では、コンパイラは各配列の完全な型を推論します。
An empty array literal alone doesn’t provide enough information for the compiler to infer the intended type of the Array
instance. When using an empty array literal, specify the type of the variable or constant.
空の配列リテラルそれだけでは、コンパイラがArray
インスタンスの意図される型を推論するのに十分な情報を提供していません。空の配列リテラルを使う時は、変数または定数の型を指定してください。
Because many functions and initializers fully specify the types of their parameters, you can often use an array literal with or without elements as a parameter. For example, the sum(_:)
function shown here takes an Int
array as a parameter:
多くの関数とイニシャライザはそれらのパラメータの型を完全に指定することから、あなたはしばしば要素のあるまたはない配列リテラルをパラメータとして使うことができます。例えば、ここで示すsum(_:)
関数は、Int
リテラルをパラメータとしてとります:
When you call a function that does not fully specify its parameters’ types, use the type-cast operator (as
) to specify the type of an array literal. For example, the log(name:
function shown here has an unconstrained generic value
parameter.
あなたが完全にそれのパラメータの型を指定しない関数を呼び出す場合は、型キャスト演算子(as
)を使って配列リテラルの型を指定してください。例えば、ここで示すlog(name:
関数は、制約のない総称体のvalue
パラメータを持ちます。
Conforming to ExpressibleByArrayLiteral ExpressibleByArrayLiteralに準拠する
Add the capability to be initialized with an array literal to your own custom types by declaring an init(array
initializer. The following example shows the array literal initializer for a hypothetical Ordered
type, which has setlike semantics but maintains the order of its elements.
init(array
イニシャライザを宣言することによって、配列リテラルで初期化される能力をあなた独自のあつらえの型に加えてください。以下の例は、仮設的なOrdered
型のための配列リテラルイニシャライザを示します、それは集合的な意味論を持つけれどもそれの要素の順番を維持します。