HOME > Extension
Extensionとは既存のクラスを簡単に拡張できたりする機能です。例えば、String型にhogeというメンバ関数を簡単に追加できます。
参考:Example how to extend array type in Swift
参考:Swiftに関するメモ その9 - Extensions
上記のString型にhoge関数を追加してみます。
import Foundation
extension String {
//メンバ変数のhogeを追加
func hoge()->String{
return "I am hoge";
}
}
これだけです。この記述をしたファイルをプロジェクトに追加するだけで、String型のクラスにhoge関数を利用することができます。
extensionの記述はどのファイルに記載していてもかまいませんが、今回はわかりやすく[extension.swift]ファイルを別途拡張用として作成してプロジェクトに追加してみます。
上記のようにプロジェクトに追加するだけで、下の様にコードヒントまで出てきてくれます。
変数は既存のクラスには追加できません。[Extension may not contain stored properties]と表記されてコンパイルできません。自作クラス等を作成する必要があります。
import Foundation
extension String {
var dynamicSalaryman:String = "Dynamic";
let staticSalaryman:String = "Static";
//メンバ変数のhogeを追加
func hoge()->String{
return "I am hoge";
}
}
上をコピペすると、下のエラーが発生します
一つのファイルの中で複数の拡張を記載してもOKです。以下はStringとUIImageにそれぞれhogeメンバ関数を追加した例です。簡単に拡張できます。
import Foundation
import UIKit
//Stringにhogeを追加
extension String {
func hoge()->String{
return "I am hoge";
}
}
//UIImageにhogeを追加
extension UIImage {
func hoge()->String{
return "I am hoge at UIImage";
}
}
Extensionは工夫次第で様々な事が可能です。以下サンプルサイト様をリストアップしてみましたのでよろしければご確認くださいませ。
2021-05-14 14:21:41 | The pitfalls of Filetransfer in watchconnectivity on WatchOS. And how to avoid.
AppleWatch it succeeds with the actual machine, but if it is a simulator, it will fail、、、
When I... |
2021-05-06 14:04:37 | Line's animation stamp production pitfalls 、、、 failure story
I tried to make a LINE sticker during Golden Week.
I made it and applied, but it was different f... |
2021-04-22 14:54:53 | Cool carousel carefully selected 3 points! Astringent image slider using WebGL.
I was on a trip to find a cool slider yesterday.
It's simple, easy to use, and has a good de... |
Tweet
![]() |
|||
|