LoginSignup
5
1

More than 3 years have passed since last update.

[SwiftUI]functionを勉強し直してみた!

Posted at

はじめに

今回はとある課題でfunctionを使用する上でつまづく所が多かった為、この機会に学び直す事にしたのでまとめてみました!

環境

・ /macOS Big Sur 11.3
・ SwiftUI : 2.0
・ Xcode : 12.4

functionの基本的な使用

Swiftで関数を使用する場合主に”関数名”、”仮引数”、”型”の指定をして使用します。

   func 関数名 (仮引数: ) -> () {
        コード.....
    }

とこんな感じがオーソドックスかと。
また関数名、仮引数名ともローワーキャメルケースで書くことが推奨されています。
(キャメルケースについてはコチラをご覧ください。)

仮数名や型はオプションなので省略することも可能です。つまり最小の実装は

   func 関数名() {
        コード.....
    }

となります。

では早速SwiftUIで使用してみましょう。
スクリーンショット 2021-04-17 15.46.47.jpg
エラーが出ました!これはSwiftUIではViewをコードで生成させる為、Viewを記載する箇所がありますが、その中でfunncは使用しないで下さいね、と言うエラーです。
スクリーンショット 2021-04-17 15.47.30.jpg
なのでこのようにViewの外に書いてあげればOK!

続いてfunctionを使用してみましょう。

   @State var showHogeText = false
 func hogehoge () {
        self.showHogeText.toggle()
    }
   Button(action: {
                hogehoge()
            }) {
                Text("hogehogeボタン")
            }
            Text(showHogeText ? "ボタンを押した後" : "ボタンを押す前")
                .foregroundColor(showHogeText ? .red : .black)
        }
    }

y1zsi-5coim.gif
上記のコードを実行するとGifのようなViewを生成することができます。

値を返すreturn

上記のように値を返さない関数は仮引数や型を省略するか -> ()とするか、-> voidとします。
ここでは値を返す事も試してみます。

    func num (n: Int) -> Int {
        total += n
        return Int(total)
    }

この様値を返す時はreturnを使用します。
そして上記の関数の使用方法は

  struct funcTtaining: View {
    @State var total = 0

    var body: some View {
        VStack{
            Button(action: {
                total = num(n: 1)
            }) {
                Text("ボタン")
            }
            Text("\(String(total))")
        }
    }
}

で使用できます。
ここではボタンを押すとnum関数の仮引数nに1が指定されているのでその1が関数内でtotalに足されて、足されたtotalがreturnで返され、button内のactionでtotalに渡される流れとなります。
553ce-t3aks.gif

まとめ

functionの基本的な使い方を整理してみました。
この記事は引き続きfunctionに関して気づいた点があれば随時追記していこうと思います。

5
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
1