<!--
{
  "availability" : [
    "iOS: 15.0.0 -",
    "iPadOS: 15.0.0 -",
    "macCatalyst: 15.0.0 -",
    "macOS: 12.0.0 -",
    "tvOS: 15.0.0 -",
    "visionOS: 1.0.0 -",
    "watchOS: 8.0.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "TabularData",
  "identifier" : "/documentation/TabularData/OptionalColumnProtocol",
  "metadataVersion" : "0.1.0",
  "role" : "Protocol",
  "symbol" : {
    "kind" : "Protocol",
    "modules" : [
      "TabularData"
    ],
    "preciseIdentifier" : "s:11TabularData22OptionalColumnProtocolP"
  },
  "title" : "OptionalColumnProtocol"
}
-->

# OptionalColumnProtocol

A type that represents a column that has missing values.

```
protocol OptionalColumnProtocol<WrappedElement> : ColumnProtocol
```

## Overview

`OptionalColumnProtocol` defines the common functionality for column types that support missing values.

## Topics

### Filling an Optional Column

[`func filled(with: Self.WrappedElement) -> FilledColumn<Self>`](/documentation/TabularData/OptionalColumnProtocol/filled(with:))

Generates a filled column by replacing missing elements with a value.

### Generating an Optional Column by Adding Two Columns

[`static func + (Self, Self) -> Column<Self.WrappedElement>`](/documentation/TabularData/OptionalColumnProtocol/+(_:_:)-2qex0)

Generates a column by adding each element in an optional column type to the corresponding elements of another.

[`func + <L, R>(L, R) -> Column<L.Element>`](/documentation/TabularData/+(_:_:)-1i7oh)

Generates a column by adding each element in a column type to the corresponding elements of an optional column type.

[`func + <L, R>(L, R) -> Column<R.Element>`](/documentation/TabularData/+(_:_:)-3exmp)

Generates a column by adding each element in an optional column type to the corresponding elements of a column type.

### Generating an Optional Column by Subtracting Two Columns

[`static func - (Self, Self) -> Column<Self.WrappedElement>`](/documentation/TabularData/OptionalColumnProtocol/-(_:_:)-5xfkx)

Generates a column by subtracting each element in an optional column type from
the corresponding elements of another.

[`func - <L, R>(L, R) -> Column<L.Element>`](/documentation/TabularData/-(_:_:)-25cs6)

Generates a column by subtracting each element in an optional column type
from the corresponding elements of a column type.

[`func - <L, R>(L, R) -> Column<R.Element>`](/documentation/TabularData/-(_:_:)-95yoe)

Generates a column by subtracting each element in a column type
from the corresponding elements of an optional column.

### Generating an Optional Column by Multiplying Two Columns

[`static func * (Self, Self) -> Column<Self.WrappedElement>`](/documentation/TabularData/OptionalColumnProtocol/*(_:_:)-5f5kx)

Generates a column by multiplying each element in an optional column type
by the corresponding elements of another.

[`func * <L, R>(L, R) -> Column<R.Element>`](/documentation/TabularData/*(_:_:)-2toor)

Generates a column by multiplying each element in an optional column type
by the corresponding elements of a column type.

[`func * <L, R>(L, R) -> Column<L.Element>`](/documentation/TabularData/*(_:_:)-l9r3)

Generates a column by multiplying each element in a column type
by the corresponding elements of an optional column type.

### Generating an Optional Column by Dividing Two Columns

[`static func / (Self, Self) -> Column<Self.WrappedElement>`](/documentation/TabularData/OptionalColumnProtocol/_(_:_:)-4nmnl)

Generates an integer column by dividing each element in an optional column type
by the corresponding elements of another.

[`func / <L, R>(L, R) -> Column<L.Element>`](/documentation/TabularData/_(_:_:)-9v3nw)

Generates an integer column by dividing each element in a column type
by the corresponding elements of an optional column type.

[`func / <L, R>(L, R) -> Column<R.Element>`](/documentation/TabularData/_(_:_:)-4igyw)

Generates an integer column by dividing each element in an optional column type
by the corresponding elements of a column type.

[`static func / (Self, Self) -> Column<Self.WrappedElement>`](/documentation/TabularData/OptionalColumnProtocol/_(_:_:)-3rlo3)

Generates a floating-point column by dividing each element in an optional column type
by the corresponding elements of another.

[`func / <L, R>(L, R) -> Column<L.Element>`](/documentation/TabularData/_(_:_:)-4pr65)

Generates a floating-point column by dividing each element in a column type
by the corresponding elements of an optional column type.

[`func / <L, R>(L, R) -> Column<R.Element>`](/documentation/TabularData/_(_:_:)-58kg6)

Generates a floating-point column by dividing each element in an optional column type
by the corresponding elements of a column type.

### Generating an Optional Column by Combining a Value

[`static func + (Self, Self.WrappedElement) -> Column<Self.WrappedElement>`](/documentation/TabularData/OptionalColumnProtocol/+(_:_:)-501gg)

Generates a column by adding a value to each element in an optional column.

[`static func + (Self.WrappedElement, Self) -> Column<Self.WrappedElement>`](/documentation/TabularData/OptionalColumnProtocol/+(_:_:)-6ko8x)

Generates a column by adding each element in an optional column to a value.

[`static func - (Self, Self.WrappedElement) -> Column<Self.WrappedElement>`](/documentation/TabularData/OptionalColumnProtocol/-(_:_:)-9mejf)

Generates a column by subtracting a value from each element in an optional column type.

[`static func - (Self.WrappedElement, Self) -> Column<Self.WrappedElement>`](/documentation/TabularData/OptionalColumnProtocol/-(_:_:)-5vffa)

Generates a column by subtracting each element in an optional column from a value.

[`static func * (Self, Self.WrappedElement) -> Column<Self.WrappedElement>`](/documentation/TabularData/OptionalColumnProtocol/*(_:_:)-orkq)

Generates a column by multiplying each element in an optional column by a value.

[`static func * (Self.WrappedElement, Self) -> Column<Self.WrappedElement>`](/documentation/TabularData/OptionalColumnProtocol/*(_:_:)-5vorv)

Generates a column by multiplying a value by each element in an optional column type.

[`static func / (Self, Self.WrappedElement) -> Column<Self.WrappedElement>`](/documentation/TabularData/OptionalColumnProtocol/_(_:_:)-7tbmq)

Generates an integer column by dividing each element in an optional column by a value.

[`static func / (Self.WrappedElement, Self) -> Column<Self.WrappedElement>`](/documentation/TabularData/OptionalColumnProtocol/_(_:_:)-56h1d)

Generates an integer column by dividing a value by each element in an optional column type.

[`static func / (Self, Self.WrappedElement) -> Column<Self.WrappedElement>`](/documentation/TabularData/OptionalColumnProtocol/_(_:_:)-5qhxr)

Generates a floating-point column by dividing each element in an optional column by a value.

[`static func / (Self.WrappedElement, Self) -> Column<Self.WrappedElement>`](/documentation/TabularData/OptionalColumnProtocol/_(_:_:)-2xfqa)

Generates a floating-point column by dividing a value by each element in an optional column type.

### Describing an Optional Column

[`func description(options: FormattingOptions) -> String`](/documentation/TabularData/OptionalColumnProtocol/description(options:))

Generates a string description of the optional column type.

### Supporting Types

[`associatedtype WrappedElement`](/documentation/TabularData/OptionalColumnProtocol/WrappedElement)

The type of the optional column type’s elements.

## Relationships

### Inherits From

[`ColumnProtocol`](/documentation/TabularData/ColumnProtocol)

[`BidirectionalCollection`](/documentation/Swift/BidirectionalCollection)

[`Collection`](/documentation/Swift/Collection)

[`Sequence`](/documentation/Swift/Sequence)

### Conforming Types

[`Column`](/documentation/TabularData/Column)

[`ColumnSlice`](/documentation/TabularData/ColumnSlice)

[`DiscontiguousColumnSlice`](/documentation/TabularData/DiscontiguousColumnSlice)

---

Copyright &copy; 2026 Apple Inc. All rights reserved. | [Terms of Use](https://www.apple.com/legal/internet-services/terms/site.html) | [Privacy Policy](https://www.apple.com/privacy/privacy-policy)