struct
AnyHashable
A type-erased hashable value.
Inheritance | CustomDebugStringConvertible, CustomReflectable, CustomStringConvertible, Equatable, Hashable |
---|
Initializers
Creates a type-erased hashable value that wraps the given instance.
- Parameter base: A hashable value to wrap.
Declaration
public
init
<
H
>
(
_
base
:
H
)
where
H
:
Hashable
Instance Variables
The value wrapped by this instance.
The base
property can be cast back to its original type using one of
the casting operators (as?
, as!
, or as
).
let
anyMessage
=
AnyHashable
(
"Hello world!"
)
if
let
unwrappedMessage
=
anyMessage
.
base
as
?
String
{
(
unwrappedMessage
)
}
// Prints "Hello world!"
Declaration
var
base
:
Any
The custom mirror for this instance.
If this type has value semantics, the mirror should be unaffected by subsequent mutations of the instance.
Declaration
var
customMirror
:
Mirror
A textual representation of this instance, suitable for debugging.
Calling this property directly is discouraged. Instead, convert an
instance of any type to a string by using the String(reflecting:)
initializer. This initializer works with any type, and uses the custom
debugDescription
property for types that conform to
CustomDebugStringConvertible
:
struct
Point
:
CustomDebugStringConvertible
{
let
x
:
Int
,
y
:
Int
var
debugDescription
:
String
{
return
"(\(
x
), \(
y
))"
}
}
let
p
=
Point
(
x
:
21
,
y
:
30
)
let
s
=
String
(
reflecting
:
p
)
(
s
)
// Prints "(21, 30)"
The conversion of p
to a string in the assignment to s
uses the
Point
type's debugDescription
property.
Declaration
var
debugDescription
:
String
A textual representation of this instance.
Calling this property directly is discouraged. Instead, convert an
instance of any type to a string by using the String(describing:)
initializer. This initializer works with any type, and uses the custom
description
property for types that conform to
CustomStringConvertible
:
struct
Point
:
CustomStringConvertible
{
let
x
:
Int
,
y
:
Int
var
description
:
String
{
return
"(\(
x
), \(
y
))"
}
}
let
p
=
Point
(
x
:
21
,
y
:
30
)
let
s
=
String
(
describing
:
p
)
(
s
)
// Prints "(21, 30)"
The conversion of p
to a string in the assignment to s
uses the
Point
type's description
property.
Declaration
var
description
:
String
Instance Methods
Hashes the essential components of this value by feeding them into the given hasher.
- Parameter hasher: The hasher to use when combining the components of this instance.
Declaration
public
func
hash
(
into
hasher
:
inout
Hasher
)
Type Methods
Declaration
public
static
func
!=(
lhs
:
Self
,
rhs
:
Self
) -
>
Bool
Returns a Boolean value indicating whether two type-erased hashable instances wrap the same type and value.
Two instances of AnyHashable
compare as equal if and only if the
underlying types have the same conformance to the Equatable
protocol
and the underlying values compare as equal.
Declaration
public
static
func
==(
lhs
:
AnyHashable
,
rhs
:
AnyHashable
) -
>
Bool
The
AnyHashable
type forwards equality comparisons and hashing operations to an underlying hashable value, hiding its specific underlying type.You can store mixed-type keys in dictionaries and other collections that require
Hashable
conformance by wrapping mixed-type keys inAnyHashable
instances: