質問編集履歴

1

この質問をするに至ったソースと、それに関するQ4を追加。Q4が分かれば、このQ&Aはすべて解決すると思います。

2024/06/06 14:58

投稿

web_sql
web_sql

スコア4

test CHANGED
File without changes
test CHANGED
@@ -39,6 +39,25 @@
39
39
  //listOf()のような初期化を使用せずにTestの要素からnullを消して「2」を追加するにはどうすればよいか
40
40
  ```
41
41
 
42
+ Q4 これはQ1~Q3の質問を要因をするに至ったプログラムソースです。
43
+ ```kotlin
44
+ data class testclass(var a: String? = null, var b: Int? = null, var c:List<Int>? = null)
45
+
46
+ fun main() {
47
+ var test1:testclass? = null
48
+ var test2 = testclass("100",50,null)
49
+ test2.c = listOf(10,20)
50
+ println(test2)
51
+ //testclass(a=100, b=50, c=[10, 20])
52
+ //test2.cはnullだったのにlistOfで代入できている!?(nullは何を代入してもnullのままのはず・・・)
53
+ test1 = test2
54
+ println(test1)
55
+ //testclass(a=100, b=50, c=[10, 20])
56
+ //test1はnullで、test1のすべてのプライマリコンストラクタもnullなのに代入できている!?
57
+ }
58
+ ```
59
+ ・「nullに代入」はできているのに、なぜ「nullにplus()」はできないのか。
60
+ ・上記の```test1 = test2```と```Test = Test?.plus(2)```の```=```は違う働きをしているのか。
42
61
  ### 試したこと
43
62
 
44
63
  もとはQ1を解決するためにいろいろ試していたが、その過程でQ2,Q3の疑問が生まれたため省略する。
@@ -46,3 +65,4 @@
46
65
  ### 補足情報(FW/ツールのバージョンなど)
47
66
  Kotlin 1.9.24
48
67
 
68
+