LoginSignup
17
13

More than 5 years have passed since last update.

【Swift】メソッドの引数が「参照渡し」ではなく「値渡し(コピー)」だった件

Last updated at Posted at 2016-03-15

引き続きSwiftを勉強中のLeeです。

[追記:2016/03/18]
class以外は全て「値渡し」で
classは「参照渡し」だそうです。
ご指摘ありがとうございます。
[追記:END]

今回はSwiftでメソッドが本当に「値渡し」になっているかを検証して
「参照渡し」はどうするのかを記したいと思います。

下記の様に書くと最後の「a」の部分で「5」のままです。

method1.swift
func f(var a: Int) ->Int {
    a = 20
    return a
}
var a = 5
f(a)
a  // a = 5のまま

これをちゃんと「参照渡し」にしたい場合は「inout」に変更して「&」を変数の前につけてあげましょう!

method2.swift
func f(inout a: Int) ->Int {
    a = 20
    return a
}
var a = 5
f(&a)
a // a = 20になる

以上になります。
Swiftでそろそろアプリを作ってみたいですね!

余談ですが、今回XcodeのPlaygroundと言う機能で試しました!
Xcodeメニューバー->Window->Welcome to Xcodeをタップ->Get started with a playground
スクリーンショット 2016-03-15 14.37.10.png
ビルドする必要がなくてSwiftを試すには持って来いのツールです!

whileやforでの変数の変化がグラフで表示されるのには驚きました!!;)
スクリーンショット 2016-03-15 14.36.43.png

17
13
3

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
17
13