第十三章方法
6646 ワード
ソース
Official documents
方法は2つに分けられます.インスタンスメソッド(Instance Methods) タイプメソッド(Type Methods)
メソッドは基本的に関数と同じです
Swiftデフォルトメソッドの最初のパラメータ名は、内部パラメータ名としてのみ使用されます.Swiftが外部パラメータ名に拡張する必要がある場合は、パラメータ名に「#」を付けて を実現する必要がある.メソッドの2番目および後続のパラメータのパラメータ名は、内部および外部のパラメータ名に自動的に拡張されます.このような自動拡張を遮断するには、パラメータ名に「-」を付けて を実現することができる.
increメソッドにはamountとnumberの2つのパラメータがあります.デフォルトでは、Swiftはamountをローカル名としてのみ使用しますが、numberをローカル名として外部名として使用します.次に、このメソッドを呼び出します.
selfはインスタンス自体を表す
上記の例のincrementメソッドは、次のように書くこともできます.
一般的に、値タイプのプロパティはインスタンスメソッドでは変更できませんが、変更メソッドを使用して変更できます.
変異メソッドを定義するにはmutatingキーワードをfuncの前に置く必要があります
変更方法の定義
変更方法の使用
変化メソッドでselfに値を割り当てる
列挙の変化方法
上記の例では、3状態スイッチの列挙を定義した.nextメソッドが呼び出されるたびに、スイッチは異なる電源状態(Off,Low,High)の前に循環的に切り替えられます.
クラスのタイプメソッドを宣言し、メソッドのfuncキーワードの前にキーワードclass を追加するは、構造体および列挙のタイプメソッドを宣言し、メソッドのfuncキーワードの前にキーワードstaticを追加する.
2015-03-21
20:27:29
Official documents
方法は2つに分けられます.
メソッドは基本的に関数と同じです
インスタンスメソッド(Instance Methods)
インスタンスメソッドを定義します。
class Counter {
var count = 0
func increment() {
count++
}
func incrementBy(amount: Int) {
count += amount
}
func reset() {
count = 0
}
}
呼び出し方法:
let counter = Counter()
// 0
counter.increment()
// 1
counter.incrementBy(5)
// 6
counter.reset()
// 0
メソッドのパラメータ名
class Counter {
var count: Int = 0
func incre(amount: Int, number: Int) {
count += amount * number
}
}
increメソッドにはamountとnumberの2つのパラメータがあります.デフォルトでは、Swiftはamountをローカル名としてのみ使用しますが、numberをローカル名として外部名として使用します.次に、このメソッドを呼び出します.
let counter = Counter()
counter.incrementBy(5, numberOfTimes: 3)
// counter value is now 15
self属性(The self Property)
selfはインスタンス自体を表す
上記の例のincrementメソッドは、次のように書くこともできます.
func increment() {
self.count++
}
へんかほう
一般的に、値タイプのプロパティはインスタンスメソッドでは変更できませんが、変更メソッドを使用して変更できます.
変異メソッドを定義するにはmutatingキーワードをfuncの前に置く必要があります
変更方法の定義
struct Point {
var x = 0.0, y = 0.0 mutating func moveByX(deltaX: Double, y deltaY: Double) {
x += deltaX
y += deltaY
}
}
変更方法の使用
var somePoint = Point(x: 1.0, y: 1.0)
somePoint.moveByX(2.0, y: 3.0)
println("The point is now at (\(somePoint.x), \(somePoint.y))")
// "The point is now at (3.0, 4.0)"
変化メソッドでselfに値を割り当てる
struct Point {
var x = 0.0, y = 0.0
mutating func moveByX(deltaX: Double, y deltaY: Double) {
self = Point(x: x + deltaX, y: y + deltaY)
}
}
列挙の変化方法
enum TriStateSwitch {
case Off, Low, High
mutating func next() {
switch self {
case Off:
self = Low
case Low:
self = High
case High:
self = Off
}
}
}
var ovenLight = TriStateSwitch.Low
ovenLight.next()
// ovenLight .High
ovenLight.next()
// ovenLight .Off
上記の例では、3状態スイッチの列挙を定義した.nextメソッドが呼び出されるたびに、スイッチは異なる電源状態(Off,Low,High)の前に循環的に切り替えられます.
タイプメソッド(Type Methods)
クラスのタイプメソッドの宣言
class SomeClass {
class func someTypeMethod() {
// type method implementation goes here
}
}
SomeClass.someTypeMethod()
構造体のタイプを宣言する方法
struct LevelTracker {
static var highestUnlockedLevel = 1
static func unlockLevel(level: Int) {
if level > highestUnlockedLevel {
highestUnlockedLevel = level
}
}
static func levelIsUnlocked(level: Int) -> Bool {
return level <= highestUnlockedLevel
}
}
2015-03-21
20:27:29