回答編集履歴
3
曖昧さの解消
answer
CHANGED
@@ -3,4 +3,4 @@
|
|
3
3
|
Swiftに限らず、多くの言語では値渡しで行われます。ただ、値渡しで渡される内容が異なります。
|
4
4
|
Swiftの場合、Intなどのプリミティブやstructなどはオブジェクト全体が値渡しされます。一方で、classはオブジェクトの参照の値が渡されます。
|
5
5
|
|
6
|
-
CBATTRequestはクラスなので参照の値が渡されます。そのため、requestを書き換えても呼び出し元のrequestは書き換わりません(ただし、現在のSwiftは仮引数をlet扱いするのでそもそも書き換えができません)が、値が指し示す先
|
6
|
+
CBATTRequestはクラスなので参照の値が渡されます。そのため、requestを書き換えても呼び出し元のrequestは書き換わりません(ただし、現在のSwiftは仮引数をlet扱いするのでそもそも書き換えができません)が、値(=参照)が指し示す先であるrequestの中身は書き換えることができます。その一方で、inoutを付加すると参照渡しになるので、呼び出し元のrequst自身を書き換えることができます。
|
2
用語の統一
answer
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
> Swiftは基本的にinoutをつけない限り値渡しである認識しています。
|
2
2
|
|
3
3
|
Swiftに限らず、多くの言語では値渡しで行われます。ただ、値渡しで渡される内容が異なります。
|
4
|
-
Swiftの場合、Intなどのプリミティブやstructなどはオブジェクト全体が値渡しされます。一方で、classは
|
4
|
+
Swiftの場合、Intなどのプリミティブやstructなどはオブジェクト全体が値渡しされます。一方で、classはオブジェクトの参照の値が渡されます。
|
5
|
-
|
5
|
+
|
6
6
|
CBATTRequestはクラスなので参照の値が渡されます。そのため、requestを書き換えても呼び出し元のrequestは書き換わりません(ただし、現在のSwiftは仮引数をlet扱いするのでそもそも書き換えができません)が、値が指し示す先は参照なのでrequestの中身は書き換えることができます。その一方で、inoutを付加すると参照渡しになるので、呼び出し元のrequst自身を書き換えることができます。
|
1
曖昧さの解消
answer
CHANGED
@@ -3,4 +3,4 @@
|
|
3
3
|
Swiftに限らず、多くの言語では値渡しで行われます。ただ、値渡しで渡される内容が異なります。
|
4
4
|
Swiftの場合、Intなどのプリミティブやstructなどはオブジェクト全体が値渡しされます。一方で、classはインスタンスの参照の値が渡されます。
|
5
5
|
|
6
|
-
CBATTRequestはクラスなので参照の値が渡されます。そのため、requestを書き換えても呼び出し元のrequestは書き換わりません(ただし、現在のSwiftは仮引数をlet扱いするのでそもそも書き換えができません)が、値が指し示す先は参照なのでrequestの中身は書き換えることができます。その一方で、inoutを付加すると参照渡しになるので、呼び出し元のrequstを書き換えることができます。
|
6
|
+
CBATTRequestはクラスなので参照の値が渡されます。そのため、requestを書き換えても呼び出し元のrequestは書き換わりません(ただし、現在のSwiftは仮引数をlet扱いするのでそもそも書き換えができません)が、値が指し示す先は参照なのでrequestの中身は書き換えることができます。その一方で、inoutを付加すると参照渡しになるので、呼び出し元のrequst自身を書き換えることができます。
|