Swift 標準ライブラリ   >     OptionSet
プロトコル
OptionSet
ビットマスクへの数学的集合インタフェースを表す型。
概観
OptionSet プロトコルを使用して、個々のビットがセットのメンバーを表すビットマスク型を表します。カスタム型でこのプロトコルを採用すると、それらの型のメンバーシップ・テスト、共用体、および交差などのセット関連操作を実行できます。さらに、特定の基準を使用して実装した場合、このプロトコルの採用には余分な作業は必要としません。
オプションセットを作成するときは、型宣言で rawValue プロパティを含めて下さい。rawValue プロパティは、Int や UInt8 などの BitwiseOperations プロトコルに準拠する型でなければなりません。次に、個々のプロパティの生の値に対して 2 の一意の累乗 (1、2、4、8、16 など) を使用してあなたのカスタムタイプの静的プロパティとして一意のオプションを作成し、各プロパティを、型の生の値の 1 ビットにより表せます。
たとえば、ShippingOptions というカスタムタイプは、顧客が購入した物を出荷するためのオプションセットです。ShippingOptions には、使用可能な出荷オプションのビットマスクを格納する Int 型の rawValue プロパティを含みます。静的メンバー NextDay、SecondDay、Priority、 および Standard は、固有の個別オプションです。
リスト 1
struct ShippingOptions: OptionSet { let rawValue: Int static let nextDay = ShippingOptions(rawValue: 1 << 0) static let secondDay = ShippingOptions(rawValue: 1 << 1) static let priority = ShippingOptions(rawValue: 1 << 2) static let standard = ShippingOptions(rawValue: 1 << 3) static let express: ShippingOptions = [.nextDay, .secondDay] static let all: ShippingOptions = [.express, .priority, .standard] }
その他のオプション値を含む配列リテラルで初期化された静的プロパティとして、あらかじめ構成された追加のオプションセット値を宣言します。この例では、express 静的プロパティに nextDay および secondDay オプションを使用して配列リテラルが割り当てられているため、これらの 2 つの要素が含まれます。
オプションセット型を使用する
オプションセットのインスタンスを作成する必要がある場合は、その型の静的メンバーの 1 つを変数または定数に割り当てます。あるいは、複数のメンバーを持つオプションセットインスタンスを作成するには、オプションセットの複数の静的メンバーを持つ配列リテラルを割り当てます。空のインスタンスを作成するには、変数に空の配列リテラルを割り当てます。
リスト 2
let singleOption: ShippingOptions = .priority let multipleOptions: ShippingOptions = [.nextDay, .secondDay, .priority] let noOptions: ShippingOptions = []
セット関連の操作を使用してメンバーシップをチェックし、カスタムオプションセット型のインスタンスからメンバーを追加または削除します。以下の例は、顧客の購入価格に基づいて無料の配送オプションを決定する方法を示しています。
リスト 3
let purchasePrice = 87.55 var freeOptions: ShippingOptions = [] if purchasePrice > 50 { freeOptions.insert(.priority) } if freeOptions.contains(.priority) { print("You've earned free priority shipping!") } else { print("Add more to your cart for free priority shipping!") } // Prints "You've earned free priority shipping!"
プロトコル要件
イニシャライザ
init(rawValue: Self.RawValue)
指定された生の値から新しいオプションセットを作成します。
デフォルトの実装
関連した型
オプションセットの element (要素) 型。
イニシャライザ
init()
空のオプションセットを作成します。
インスタンスメソッド
func contains(Self)
与えられた要素がオプションセットのメンバであるかどうかを示すブール値を返します。
func formIntersection(Self)
与えられたセットにも存在しない、このオプションセットのすべての要素を削除します。
func formSymmetricDifference(Self)
このセットを、このセットか与えられたセットに含まれるが両方には含まれないすべての要素を含む新しいセットに置き換えます。
func formUnion(Self)
別のセットの要素をこのオプションセットに挿入します。
func insert(Self.Element)
与えられた要素が既にメンバーでない場合は、オプションセットに追加します。
func intersection(Self)
このセットと与えられたセットの両方に含まれる要素のみを持つ新しいオプションセットを返します。
func remove(Self.Element)
与えられた要素と、それによって包含されるすべての要素を削除します。
func symmetricDifference(Self)
このセットまたは与えられたセットに、ただし両方にではなく、含まれる要素を持つ新しいオプションセットを返します。
func union(Self)
このセット、与えられたセット、またはその両方に含まれる要素の新しいオプションセットを返します。
func update(with: Self.Element)
与えられた要素をセットに挿入します。
関連
以下より継承
- RawRepresentable
- SetAlgebra
以下により採用
- AlignmentOptions
- AU3DMixerRenderingFlags
- AudioBytePacketTranslationFlags
- AudioChannelBitmap
- AudioChannelFlags
- AudioComponentFlags
- AudioComponentInstantiationOptions
- AudioFileFlags
- AudioFileRegionFlags
- AudioFileStreamParseFlags
- AudioFileStreamPropertyFlags
- AudioFileStreamSeekFlags
- AudioQueueProcessingTapFlags
- AudioSettingsFlags
- AudioTimeStampFlags
- AudioUnitParameterOptions
- AudioUnitRenderActionFlags
- AUGenericViewDisplayFlags
- AUHostTransportStateFlags
- AUParameterMIDIMappingFlags
- AUScheduledAudioSliceFlags
- AUSpatialMixerRenderingFlags
- AuthorizationFlags
- AVAssetReferenceRestrictions
- AVAudioPlayerNodeBufferOptions
- AVAudioSessionCategoryOptions
- AVAudioSessionInterruptionOptions
- AVAudioSessionRecordPermission
- AVAudioSessionSetActiveOptions
- AVMovieWritingOptions
- AVMusicSequenceLoadOptions
- AXCopyMultipleAttributeOptions
- AXMenuItemModifiers
- ByteCountFormatter.Units
- CAAutoresizingMask
- CAEdgeAntialiasingMask
- CAFFormatFlags
- CAFRegionFlags
- CBAttributePermissions
- CBCharacteristicProperties
- CFCalendarUnit
- CFDataSearchFlags
- CFFileSecurityClearOptions
- CFGregorianUnitFlags
- CFISO8601DateFormatOptions
- CFNetServiceBrowserFlags
- CFNetServiceRegisterFlags
- CFNumberFormatterOptionFlags
- CFPropertyListMutabilityOptions
- CFRunLoopActivity
- CFSocketCallBackType
- CFStreamEventType
- CFStringCompareFlags
- CFStringTokenizerTokenType
- CFURLBookmarkCreationOptions
- CFURLBookmarkResolutionOptions
- CFURLEnumeratorOptions
- CFXMLParserOptions
- CFXMLParserStatusCode
- CGBitmapInfo
- CGCaptureOptions
- CGConfigureOption
- CGDisplayChangeSummaryFlags
- CGEventFilterMask
- CGEventFlags
- CGGradientDrawingOptions
- CGScreenUpdateOperation
- CGWindowImageOption
- CGWindowListOption
- CKApplicationPermissions
- CKQuerySubscriptionOptions
- CKRecordZoneCapabilities
- CKSubscriptionOptions
- CLKComplicationTimeTravelDirections
- CMAttitudeReferenceFrame
- CMSSignedAttributes
- CMTimeFlags
- CTFontCollectionCopyOptions
- CTFontOptions
- CTFontStylisticClass
- CTFontSymbolicTraits
- CTFontTableOptions
- CTLineBoundsOptions
- CTRunStatus
- CTUnderlineStyle
- CTUnderlineStyleModifiers
- CVPixelBufferLockFlags
- CVPixelBufferPoolFlushFlags
- CVSMPTETimeFlags
- CVTimeFlags
- CVTimeStampFlags
- CWCipherKeyFlags
- DateComponentsFormatter.
     ZeroFormattingBehavior - DispatchIO.CloseFlags
- DispatchIO.IntervalFlags
- DispatchQueue.Attributes
- DispatchSource.FileSystemEvent
- DispatchSource.MachSendEvent
- DispatchSource.MemoryPressureEvent
- DispatchSource.ProcessEvent
- DispatchSource.TimerFlags
- DispatchWorkItemFlags
- DistributedNotificationCenter.Options
- EAWiFiUnconfiguredAccessoryProperties
- EKCalendarEventAvailabilityMask
- EKEntityMask
- FileManager.DirectoryEnumerationOptions
- FileManager.ItemReplacementOptions
- FileManager.SearchPathDomainMask
- FileManager.UnmountOptions
- FileManager.VolumeEnumerationOptions
- FileWrapper.ReadingOptions
- FileWrapper.WritingOptions
- GKMeshGraphTriangulationMode
- HKQueryOptions
- HKStatisticsOptions
- INCallCapabilityOptions
- INCarSignalOptions
- INMessageAttributeOptions
- INPhotoAttributeOptions
- interface_event_t
- IOSurfaceLockOptions
- ISO8601DateFormatter.Options
- JSONSerialization.ReadingOptions
- JSONSerialization.WritingOptions
- LSAcceptanceFlags
- LSHandlerOptions
- LSItemInfoFlags
- LSLaunchFlags
- LSRequestedInfo
- LSRolesMask
- MeasurementFormatter.UnitOptions
- MKDirectionsTransportType
- MLMediaSourceType
- MPMediaPlaylistAttribute
- MPMediaType
- MPMovieLoadState
- MPMovieMediaTypeMask
- MPSKernelOptions
- MTLBlitOption
- MTLColorWriteMask
- MTLPipelineOption
- MTLRenderStages
- MTLResourceOptions
- MTLTextureUsage
- MusicSequenceFileFlags
- MusicSequenceLoadFlags
- NetService.Options
- NotificationQueue.NotificationCoalescing
- NSAppleEventDescriptor.SendOptions
- NSApplicationActivationOptions
- NSApplicationOcclusionState
- NSApplicationPresentationOptions
      PINOperation.Completion
      SecurePINChange.Confirmation
以下も見よ
関連したシンボル
BitwiseOperations
SetAlgebra