質問するログイン新規登録

回答編集履歴

3

曖昧さの解消

2020/01/06 06:55

投稿

AOKINAO
AOKINAO

スコア268

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自身を書き換えることができます。

2

用語の統一

2020/01/06 06:55

投稿

AOKINAO
AOKINAO

スコア268

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

曖昧さの解消

2020/01/06 06:52

投稿

AOKINAO
AOKINAO

スコア268

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自身を書き換えることができます。