---
title: "difference(from:by:)"
framework: swift
role: symbol
role_heading: Instance Method
path: "swift/string/utf16view/difference(from:by:)"
---

# difference(from:by:)

Returns the difference needed to produce this collection’s ordered elements from the given collection, using the given predicate as an equivalence test.

## Declaration

```swift
func difference<C>(from other: C, by areEquivalent: (C.Element, Self.Element) -> Bool) -> CollectionDifference<Self.Element> where C : BidirectionalCollection, Self.Element == C.Element
```

## Parameters

- `other`: The base state.
- `areEquivalent`: A closure that returns a Boolean value indicating whether two elements are equivalent.

## Return Value

Return Value The difference needed to produce the receiver’s state from the parameter’s state.

## Discussion

Discussion This function does not infer element moves. If you need to infer moves, call the inferringMoves() method on the resulting difference. note: Worst case performance is O(n * m), where n is the count of this collection and m is other.count. You can expect faster execution when the collections share many common elements.
