Swiftの書き方まとめ(関数・構造体)

エンジニア

Swiftというプログラミング言語の書き方についてのまとめサイトになります。
これからiPhoneやMac向けのアプリケーション開発に挑戦したい!という人の助けになれればと思います。

もっと初歩的な事を知りたい方は前の記事を参考にしていただければと思います。

関数

関数の書き方

Swiftで関数を宣言する方法は次の通りです。Swiftでは、関数は特定のタスクや処理を実行するために使用されます。

func 関数名(パラメータ1: パラメータ型, パラメータ2: パラメータ型, ...) -> 戻り値の型 {
    // 関数の本体(処理)
    return 戻り値
}

これらの要素を説明します:

  • func: 関数を宣言するためのキーワードです。
  • 関数名: 関数の名前を指定します。関数名は一意で、識別子のルールに従う必要があります。
  • (パラメータ1: パラメータ型, パラメータ2: パラメータ型, ...): 関数に渡すパラメータ(引数)のリストを定義します。各パラメータは名前と型を持ち、コンマで区切ります。関数内でこれらのパラメータを使用できます。
  • -> 戻り値の型: 関数が戻す値の型を指定します。戻り値がない場合は-> Voidまたは-> ()とします。
  • 関数の本体(処理): 関数が実行するコードを中括弧 { } 内に記述します。この部分には関数が行う具体的な処理を含めます。
  • return 戻り値: 関数が戻り値を持つ場合、return(ステートメント)を使用してその値を返します。
func greet(person: String) -> String { //personの型は文字列、戻り値(結果)は文字列の意味
    let greeting = "Hello, " + person + "!"
    return greeting
}

let message = greet(person: "Alice")//関数の引数(person)に入れたい値を記載
print(message)

Hello, Alice!

関数のに複数の引数、複数の戻り値を指定することも可能です。

func greet(person: String, age: Int) -> (String, Int) {
    let greeting = "Hello, " + person + "!"
    let ages = age + 10
    return (greeting, ages)
}

let message = greet(person: "Alice", age: 10)//関数の引数(person)に入れたい値を記載
print(message, age)

Hello, Alice! 20

※変数 = { 処理 }の書き方で戻り値を変数に格納することも可能です。

構造体

構造体について

構造体は簡単にいうと値をまとめておくためのものです。構造体はインスタンスを作ることで使えるようになる(クラスと書き方似てるよ)
ちょっと用語紹介:
・インスタンス→構造体を基にして作った実体です。
・クラス内の変数や定数→プロパティ
・関数→メソッド

構造体の書き方

Swiftでクラスを宣言する方法はこちらです。

struct 構造体名 {
	プロパティ1
	メソッド1
     ....
}

//構造体を使ってインスタンス(実体)を作成。
var 変数名 = 構造体名()//変数名→インスタンス

//インスタンスを使って中身を使用
インスタンス.プロパティ1
インスタンス.プロパティ2

※クラスと構造体は書き方は似ていますが使われ方が違います。お時間ある時にでも調べてください。個人的に構造体の方をよく使用しますのでこちらを記載しています。

struct MyStruct {
    // クラスのプロパティ(インスタンス変数)
    var myProperty = 0
    var anotherProperty = "message"

    // 構造体のメソッド
    func myMethod() {
        // メソッドの本体(処理)
        print("My method is called.")
    }
// 構造体のインスタンスを作成
let myInstance = MyStruct()

// プロパティにアクセス
print(myInstance.myProperty)//クラス内のプロパティを出してるだけ
print(myInstance.anotherProperty) //クラス内のプロパティを出してるだけ
myInstance.myMethod() // 関数を実行

0
message
My method is called.

イニシャライザ

オブジェクトのインスタンスを初期化し、そのオブジェクトのプロパティや変数を設定する特別なメソッドです。イニシャライザは、クラス、構造体、列挙型(enum)などのSwiftのデータ型で使用されます。
難しく書かれてますが、以下の時に必要というわけです。
プロパティに初期値がない場合→ここが分かってればとりあえずOK
・カスタム初期化ロジックが必要な場合→ここはまぁ、なんとなくで
・オプショナル型のプロパティが含まれる場合→これは割と使う

書き方例
class MyClass {
    // クラスのプロパティ(インスタンス変数)
    var myProperty: Int //初期値がない
    var anotherProperty: String //初期値がない
    
    // イニシャライザ(初期化メソッド)
    init(myProperty: Int, anotherProperty: String) {
        self.myProperty = myProperty //初期値を与えてあげる
        self.anotherProperty = anotherProperty //初期値を与えてあげる
    }
    
    // クラスのメソッド
    func myMethod() {
        // メソッドの本体(処理)
        print("My method is called.")
    }
}

// クラスのインスタンスを作成
let myInstance = MyClass(myProperty: 42, anotherProperty: "Hello")

// プロパティにアクセス
print(myInstance.myProperty)     
print(myInstance.anotherProperty)

// メソッドを呼び出す
myInstance.myMethod()

42
Hello
My method is called


おまけ
構造体は配列にすることできる→インスタンスを複数格納できる

var 配列名:[構造体] = [
インスタンス1,
インスタンス2
]
配列名[何番].プロパティ //格納かれた何番のインスタンス使用

以上になります。
ここから他にも難易度を上げたSwiftの書き方の記事を上げていきます。

アプリ”NowShare”をダウンロード
情報共有アプリ"NowShare"
今からみんなでナレッジ共有! 本当に欲しい情報をキャッチ&リリース 教えてあげたい情報を知りたい人にすぐに共有。 ためになった情報にはいいねを押して盛り上げよう!
エンジニア
ナスジニアをフォローする
🍆ナスジニアのブログ(iPhoneアプリ開発)

コメント

タイトルとURLをコピーしました