プロトコル


Numeric


乗算をサポートする値を持つ型。


iOS 8.0+ iPadOS 8.0+ Mac Catalyst 13.0+ macOS 10.10+

tvOS 9.0+ visionOS 1.0+ watchOS 2.0+

protocol Numeric : AdditiveArithmetic, ExpressibleByIntegerLiteral





Numeric プロトコルは、整数や浮動小数点数などのスカラー値に対する算術演算に適した基盤を提供します。Numeric プロトコルを汎用制約として使用することで、標準ライブラリの任意の数値型を操作する汎用メソッドを作成できます。


以下の例は、シーケンスの値を 2 倍した配列を返すメソッドを追加して Sequence を拡張しています。


  1. extension Sequence where Element: Numeric {
  2. func doublingAll() -> [Element] {
  3. return map { $0 * 2 }
  4. }
  5. }

この拡張機能により、Numeric に準拠する要素を持つ任意のシーケンスに doublingAll() メソッドが追加されます。例えば、double 型の配列や整数型の範囲の要素を 2 倍にすることができます。


  1. let observations = [1.5, 2.0, 3.25, 4.875, 5.5]
  2. let doubledObservations = observations.doublingAll()
  3. // doubledObservations == [3.0, 4.0, 6.5, 9.75, 11.0]
  4. let integers = 0..<8
  5. let doubledIntegers = integers.doublingAll()
  6. // doubledIntegers == [0, 2, 4, 6, 8, 10, 12, 14]


Numeric プロトコルへの準拠


独自のカスタム型に Numeric プロトコル準拠を追加するには、必要なイニシャライザと演算子を実装し、カスタム型の任意の値の大きさを表すことができる型を使用して magnitude プロパティを提供します。





トピックス


演算子


static func * (Self, Self) -> Self

2 つの値を乗算し、その積を生成します。

必須


static func *= (inout Self, Self)

2 つの値を乗算し、結果を左辺の変数に格納します。

必須



関連型


associatedtype Magnitude : Comparable, Numeric

準拠型のあらゆる可能な値の絶対値を表すことができる型。

必須



イニシャライザ


init?<T>(exactly: T)

与えられた整数を正確に表現できる場合は、その整数から新しいインスタンスを作成します。

必須 デフォルトの実装が提供されます。



インスタンスプロパティ


var magnitude: Self.Magnitude

この値の大きさ (マグニチュード)。

必須 デフォルトの実装が提供されます。





関連


以下からの継承


AdditiveArithmetic

Equatable

ExpressibleByIntegerLiteral



以下による継承


BinaryFloatingPoint

BinaryInteger

FixedWidthInteger

FloatingPoint

SignedInteger

SignedNumeric

UnsignedInteger



準拠型


Double

Float

Float16

Float80

Int

Int128

Int16

Int32

Int64

Int8

UInt

UInt128

UInt16

UInt32

UInt64

UInt8





以下も見よ


基本的な算術


protocol AdditiveArithmetic

加算と減算をサポートする値を持つ型。


protocol SignedNumeric

否定演算を行う数値型。


protocol Strideable

オフセットおよび測定が可能な連続した 1 次元の値を表す型。














トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ