Sponsored Link
3urpeiseのヤマサキです。
コードを書いてて違う型だけど同じ処理をしたい!って時ありますよね?そんな時どうしていますか?
Swiftはそんな悩める子羊を救う手立てを用意してくれていました。
今日はSwiftならではのGenericTypeと言う関数の再利用方法を紹介します。
まずはコードを見てもらいましょう
/**
*GenericTypeとは再利用可能な任意の型で
*利用可能な関数を作れる
*/
/**
* [struct] とはクラスによく似た構造体
*主目的はシンプルな値をカプセル化
*別の型を継承する必要がない場合
*使い方はクラスとほぼ同じ
*/
// Name = struct名 <任意の型名>
struct Name<Yamasaki> {
// 型の指定
var items = [Yamasaki]()
// mutating = 構造体の内容を書き換える時に必要な修飾子
mutating func push(item:Yamasaki) {
items.append(item)
}
mutating func pop() -> Yamasaki {
return items.removeLast()
}
}
// String型でインスタンス化する
var nameString = Name<String>()
// structで作った配列の変数にインスタンス化に準ずる値を入れる
nameString.push("hello")
println(nameString.pop()) // 結果 > ["hello"]
// 同じ処理を違う型にてインスタンス化
var nameInt = Name<Int>()
//structで作った配列の変数にインスタンス化に準ずる値を入れる
nameInt.push(123)
println(nameInt.pop()) // 結果 > [123]
これです。
これ一体何をしてるかって言うと作ったメソッドに対して変化できる型(任意の文字)を持たせた処理をしています。
上のコードを見てもらえればわかるように全く同じ処理を型を変えて全く同じように動かしています。
これすげーありがてぇ
皆んなもっとSwift使おうぜ
Objective-Cに比べて楽な事多すぎだぜぇ
Swift最高!
Sponsored Link
ツイート
SwiftならではのTipsその1(GenericTypeでメソッドの再利用)