Arrays
Arrays are ordered lists of values. Resource attributes which accept multiple values (including the relationship metaparameters) generally expect those values in an array. Many functions also take arrays, including the iteration functions.
[]
. An optional trailing comma is allowed between the final value
and the closing square
bracket.[ 'one', 'two', 'three' ]
# Equivalent:
[ 'one', 'two', 'three', ]
The
values in an array can be any data type.Array values are immutable — they cannot be changed once they are created.
Accessing items in an array
$my_array = [ 'one', 'two', 'three' ]
notice( $my_array[1] )
This manifest would log two
as a notice. The value of $my_array[0]
would be one
, because
indexes count from zero.$my_array = [ 'one', 'two', 'three', 'four', 'five' ]
notice( $my_array[2] ) # ok
notice( $my_array [2] ) # syntax error
$my_array = [ 'one', {'second' => 'two', 'third' => 'three'} ]
notice( $my_array[1]['third'] )
This manifest would log three
as a notice. $my_array[1]
is a hash, and we access a key named 'third'.-1
being the last element of the
array:$my_array = [ 'one', 'two', 'three', 'four', 'five' ]
notice( $my_array[2] )
notice( $my_array[-2] )
The first notice would log three
, and the second notice would log four
.undef
:$my_array = [ 'one', 'two', 'three', 'four', 'five' ]
$cool_value = $my_array[6] # value is undef
Array[<TYPE>]
data type matches a given array, empty arrays match if
the type accepts zero-length
arrays.$my_array = []
if $my_array =~ Array[String] {
notice( 'my_array' )
}
This manifest would log my_array
as a notice,
because the expression matches the empty array.Accessing sections of an array
You can access sections of an array by numerical index. Like accessing individual items,
accessing sections uses square brackets, but it uses two indexes, separated by a comma. For
example: $array[3,10]
.
The result of an array section is always another array.
The first number of the index is the start position. Positive numbers count forward from
the start of the array, starting at zero. Negative numbers count backward from the end
of the array, starting at -1
.
The second number of the index is the stop position. Positive numbers are lengths, counting
forward from the start position. Negative numbers are absolute positions, counting backward
from the end of the array starting at -1
.
$my_array = [ 'one', 'two', 'three', 'four', 'five' ]
notice( $my_array[2,1] ) # evaluates to ['three']
notice( $my_array[2,2] ) # evaluates to ['three', 'four']
notice( $my_array[2,-1] ) # evaluates to ['three', 'four', 'five']
notice( $my_array[-2,1] ) # evaluates to ['four']
Array operators
-
append with
<<
-
concatenate with
+
-
remove elements with
-
or to convert arrays to comma-separated lists with *
(splat). See the Array operators section of Expressions for more information.
Additional functions for arrays
puppetlabs-stdlib
module contains useful functions for working with arrays, including:
delete
|
member
|
sort
|
delete_at
|
prefix
|
unique
|
flatten
|
range
|
validate_array
|
grep
|
reverse
|
values_at
|
hash
|
shuffle
|
zip
|
is_array
|
size
|
The Array
data type
The data type of arrays is Array
. By
default, Array
matches arrays of any length,
provided all values in the array match the abstract data type Data
.
You can use parameters to restrict which values Array
matches.
Parameters
Array
is:Array[<CONTENT TYPE>, <MIN SIZE>, <MAX SIZE>]
These
parameters are optional. They must be listed in order; if you need to specify a later
parameter, you must also specify values for any prior ones. Position | Parameter | Data type | Default value | Description |
---|---|---|---|---|
1 | Content type | Type |
Data |
The kind of values the array contains. You can specify only one data type per
array, and every value in the array must match that type. Use an
abstract type to allow multiple data types. If the order of elements matters, use
the Tuple type instead of Array . |
2 | Minimum size | Integer |
0 | The minimum number of elements in the array. This parameter accepts the
special value default , which uses its default
value. |
3 | Maximum size | Integer |
infinite | The maximum number of elements in the array. This parameter accepts the
special value default , which uses its default
value. |
Array
- Matches an array of any length. All elements in the array must match
Data
. Array[String]
- Matches an array of any size that contains only strings.
Array[Integer, 6]
- Matches an array containing at least six integers.
Array[Float, 6, 12]
- Matches an array containing at least six and at most 12 floating-point numbers.
Array[Variant[String, Integer]]
- Matches an array of any size that contains only strings or integers, or both.
Array[Any, 2]
- Matches an array containing at least two elements, allowing any data type
(including
Type
andResource
).
The abstract Tuple
data type lets you
specify data types for every element in an array, in order. Abstract types, such
as Variant
and Enum
, are useful when specifying content types for arrays that include multiple
kinds of data.