October 2014
Intermediate to advanced
280 pages
7h 20m
English
You can define implementations for one or more of the following types:
Any | Atom | BitString | Float | Function | Integer |
List | PID | Port | Record | Reference | Tuple |
The type BitString is used in place of Binary.
The type Any is a catchall, allowing you to match an implementation with any type. Just as with function definitions, you’ll want to put the implementations for specific types before an implementation for Any.
You can list multiple types on a single defimpl. For example, the following protocol can be called to determine if a type is a collection:
| protocols/is_collection.exs | |
| | defprotocol Collection do |
| | @fallback_to_any true |
| | def is_collection?(value) |
| | end |
| | |
| | defimpl Collection, for: [List, Tuple, BitString] do |
| | def is_collection?(_), ... |
Read now
Unlock full access