Swift-methods

提供:Dev Guides
移動先:案内検索

Swift-メソッド

Swift 4言語では、特定のタイプに関連付けられた関数はメソッドと呼ばれます。 Objective Cでは、クラスを使用してメソッドを定義しますが、Swift 4言語では、クラス、構造体、および列挙のメソッドを柔軟に使用できます。

インスタンスメソッド

Swift 4言語では、クラス、構造、および列挙インスタンスはインスタンスメソッドを介してアクセスされます。

インスタンスメソッドは機能を提供します

  • インスタンスのプロパティにアクセスして変更するには
  • インスタンスのニーズに関連する機能

インスタンスメソッドは、\ {}中括弧内に記述できます。 型インスタンスのメソッドおよびプロパティに暗黙的にアクセスできます。 型の特定のインスタンスが呼び出されると、その特定のインスタンスにアクセスします。

構文

func funcname(Parameters) -> returntype {
   Statement1
   Statement2
   ---
   Statement N
   return parameters
}

class calculations {
   let a: Int
   let b: Int
   let res: Int

   init(a: Int, b: Int) {
      self.a = a
      self.b = b
      res = a + b
   }

   func tot(c: Int) -> Int {
      return res - c
   }

   func result() {
      print("Result is: \(tot(c: 20))")
      print("Result is: \(tot(c: 50))")
   }
}
let pri = calculations(a: 600, b: 300)
pri.result()

プレイグラウンドを使用して上記のプログラムを実行すると、次の結果が得られます-

Result is: 880
Result is: 850

クラスの計算は、2つのインスタンスメソッドを定義します-

  • init()は、2つの数値aとbを追加し、結果「res」に格納するように定義されています *tot()は、「c」値を渡すことから「res」を減算するために使用されます

最後に、aとbの値を持つ計算メソッドを印刷するために呼び出されます。 インスタンスメソッドには「。」でアクセスしますドット構文

ローカルおよび外部パラメーター名

Swift 4関数は、変数のローカル宣言とグローバル宣言の両方を記述します。 同様に、Swift 4メソッドの命名規則もObjective Cのそれに似ています。 ただし、ローカルとグローバルのパラメーター名宣言の特性は、関数とメソッドで異なります。 Swift 4の最初のパラメーターは、アクセスしやすい命名規則のために、「with」、「for」、および「by」として前置詞名で参照されます。

Swift 4は、最初のパラメーター名をローカルパラメーター名として宣言し、残りのパラメーター名をグローバルパラメーター名として宣言することにより、メソッドに柔軟性を提供します。 ここで、「no1」はSwift 4のメソッドによってローカルパラメーター名として宣言されています。 「no2」はグローバル宣言に使用され、プログラム全体でアクセスされます。

class division {
   var count: Int = 0
   func incrementBy(no1: Int, no2: Int) {
      count = no1/no2
      print(count)
   }
}

let counter = division()
counter.incrementBy(no1: 1800, no2: 3)
counter.incrementBy(no1: 1600, no2: 5)
counter.incrementBy(no1: 11000, no2: 3)

プレイグラウンドを使用して上記のプログラムを実行すると、次の結果が得られます-

600
320
3666

#および_記号付きの外部パラメーター名

Swift 4のメソッドはローカル宣言の最初のパラメーター名を提供しますが、ユーザーはパラメーター名をローカル宣言からグローバル宣言に変更することができます。 これは、「#」記号の先頭に最初のパラメーター名を付けることで実行できます。 そうすることで、モジュール全体で最初のパラメーターにグローバルにアクセスできます。

ユーザーが外部名を使用して後続のパラメーター名にアクセスする必要がある場合、メソッド名は「_」記号を使用してオーバーライドされます。

class multiplication {
   var count: Int = 0
   func incrementBy(no1: Int, no2: Int) {
      count = no1* no2
      print(count)
   }
}

let counter = multiplication()

counter.incrementBy(no1: 800, no2: 3)
counter.incrementBy(no1: 100, no2: 5)
counter.incrementBy(no1: 15000, no2: 3)

プレイグラウンドを使用して上記のプログラムを実行すると、次の結果が得られます-

2400
500
45000

メソッドの自己プロパティ

メソッドには、定義されたすべての型インスタンスに対して「自己」と呼ばれる暗黙のプロパティがあります。 'Self’プロパティは、定義されたメソッドの現在のインスタンスを参照するために使用されます。

class calculations {
   let a: Int
   let b: Int
   let res: Int

   init(a: Int, b: Int) {
      self.a = a
      self.b = b
      res = a + b
      print("Inside Self Block: \(res)")
   }

   func tot(c: Int) -> Int {
      return res - c
   }

   func result() {
      print("Result is: \(tot(c: 20))")
      print("Result is: \(tot(c: 50))")
   }
}

let pri = calculations(a: 600, b: 300)
let sum = calculations(a: 1200, b: 300)

pri.result()
sum.result()

プレイグラウンドを使用して上記のプログラムを実行すると、次の結果が得られます-

Inside Self Block: 900
Inside Self Block: 1500
Result is: 880
Result is: 850
Result is: 1480
Result is: 1450

インスタンスメソッドからの値タイプの変更

Swift 4では、言語構造と列挙は、そのインスタンスメソッドで変更できない値型に属します。 ただし、Swift 4言語では、動作を「変更」することで値の型を柔軟に変更できます。 Mutateは、インスタンスメソッドに変更を加え、メソッドの実行後に元のフォームに戻ります。 また、「self」プロパティによって、暗黙的な機能のために新しいインスタンスが作成され、実行後に既存のメソッドを置き換えます

struct area {
   var length = 1
   var breadth = 1

   func area() -> Int {
      return length *breadth
   }
   mutating func scaleBy(res: Int) {
      length* = res
      breadth *= res
      print(length)
      print(breadth)
   }
}

var val = area(length: 3, breadth: 5)
val.scaleBy(res: 3)
val.scaleBy(res: 30)
val.scaleBy(res: 300)

プレイグラウンドを使用して上記のプログラムを実行すると、次の結果が得られます-

9
15
270
450
81000
135000

変異法の自己特性

「self」プロパティと組み合わせたメソッドを変更すると、新しいインスタンスが定義済みのメソッドに割り当てられます。

struct area {
   var length = 1
   var breadth = 1
   func area() -> Int {
      return length *breadth
   }
   mutating func scaleBy(res: Int) {
      self.length* = res
      self.breadth *= res
      print(length)
      print(breadth)
   }
}

var val = area(length: 3, breadth: 5)
val.scaleBy(res: 13)

プレイグラウンドを使用して上記のプログラムを実行すると、次の結果が得られます。 −

39
65

型メソッド

メソッドの特定のインスタンスが呼び出されると、インスタンスメソッドとして呼び出されます。また、メソッドが特定のタイプのメソッドを呼び出す場合、「タイプメソッド」と呼ばれます。 「クラス」の型メソッドは「func」キーワードで定義され、構造体と列挙型のメソッドは「func」キーワードの前の「static」キーワードで定義されます。

型メソッドは「。」によって呼び出され、アクセスされます特定のインスタンスを呼び出す代わりに、メソッド全体が呼び出される構文。

class Math {
   class func abs(number: Int) -> Int {
      if number < 0 {
         return (-number)
      } else {
         return number
      }
   }
}

struct absno {
   static func abs(number: Int) -> Int {
      if number < 0 {
         return (-number)
      } else {
         return number
      }
   }
}

let no = Math.abs(number: -35)
let num = absno.abs(number: -5)

print(no)
print(num)

プレイグラウンドを使用して上記のプログラムを実行すると、次の結果が得られます。 −

35
5