最終更新日: 2026-07-26
TOP(About this memo)) > 一覧(Swift) > 関数・クロージャ
func someFunc(bbb: String) -> [String] {
// 〜〜〜
return contents
}
func addTwoInts(a: Int, b: Int) -> Int {
return a + b
}
print(addTwoInts(a: 3, b: 8))
は以下のようにラベル省略可にできる。
func addTwoInts(_ a: Int, _ b: Int) -> Int {
return a + b
}
print(addTwoInts(3, 8))
func addTwoInts(a: Int, b: Int) -> Int {
return a + b
}
var mathFunction: (Int, Int) -> Int
mathFunction = addTwoInts
print(mathFunction(3, 8)) // (?) 型宣言した変数経由で呼ぶ場合はラベルが使えなくなる?
{}で囲った中に処理を記述する。{ (引数) -> 戻り値の型 in
処理
return // ステートメントが1行の場合、returnを省略することができる。
}
{ () -> () in print("foo") }
() -> ()も省略できる
{ print("foo") }
{ print("foo") }()
let f: (Int, Int) -> String
f = { (num1: Int, num2: Int) -> String in return String(num1 + num2) }
func calculate(_ a: Int, _ b: Int, _ function: (Int, Int) -> Int) -> Int {
return function(a, b)
}
calculate(10, 20, {
(val1: Int, val2: Int) in
return val1 * val2
})
calculate(10, 20, {
val1, val2 in
return val1 * val2
})
calculate(10, 20, { $0 * $1 })
calculate(10, 20, *)
calculate(10, 20, +)
calculate(10, 20, -)
{ }の中に処理内容を記述することができる。calculate(10, 20) {
$0 * $1
}
()も不要。func sayHello(greeting: (String) -> String) -> () {
print(greeting("Hello"))
}
sayHello { $0 + ", World" } // Hello, World
sayHello { "Hi, " + $0 } // Hi, Hello
subject.sink(
receiveCompletion: { completion in
print("complete")
},
receiveValue: { string in
print("\(string)")
}
)
下記のように書ける。
subject.sink { completion in
print("complete")
} receiveValue: { string in
print("\(string)")
}
init(action: () -> Void, label: () -> Label)
Button(action: { self.number += 1 }, label: { Text("カウント") })
Button(action: { () -> Void in self.number += 1 }) {
Text("カウント")
}