Swift 5.4:クラスメンバーの暗黙的な式(「ドット構文」とも呼ばれます)は、最終的な戻り値の型が同じである限り、そのような式の結果としてプロパティまたはメソッドにアクセスする場合でも使用できるようになりました。
この記事の執筆時点では、ということに注意してくださいスウィフト5.4の一部としてベータテスト中であるXcodeの12.5。 |
実際には、これは、静的APIを使用してオブジェクトまたは値を作成するとき、または列挙型にアクセスするときに、そのクラスインスタンスのメソッドまたはプロパティを直接呼び出すことができ、コンパイラがその型を推測できることを意味します。を参照しています。
たとえば、システムの一部として提供されている組み込みの静的APIの1つを使用してUIColorをインスタンス化する場合、次のような状況でUIColor自体を明示的に参照しなくても、その色のアルファコンポーネントを簡単に変更できるようになりました。
// In Swift 5.3 and earlier, an explicit type reference is always
// required when dealing with chained expressions:
let view = UIView()
view.backgroundColor = UIColor.blue.withAlphaComponent(0.5)
...
// In Swift 5.4, the type of our expression can now be inferred:
let view = UIView()
view.backgroundColor = .blue.withAlphaComponent(0.5)
...
, API, , UIColor, :
extension UIColor {
static var chiliRed: UIColor {
UIColor(red: 0.89, green: 0.24, blue: 0.16, alpha: 1)
}
}
let view = UIView()
view.backgroundColor = .chiliRed.withAlphaComponent(0.5)
...
, , API. , « API Swift» API, , , :
extension ImageFilter {
static var dramatic: Self {
ImageFilter(
name: "Dramatic",
icon: .drama,
transforms: [
.portrait(withZoomMultipler: 2.1),
.contrastBoost,
.grayScale(withBrightness: .dark)
]
)
}
}
Swift 5.4 ( ) - , ImageFilter, .transforms:
extension ImageFilter {
func combined(with filter: Self) -> Self {
var newFilter = self
newFilter.transforms += filter.transforms
return newFilter
}
}
, . , .
let filtered = image.withFilter(.dramatic.combined(with: .invert))
! , API- , , , .