代入演算子の動きが違うんだなあ的なちょっとしたメモ
Swiftは5 (Windowsしかないのでひとまずオンライン環境)
Swiftの勉強中、「Javaの代入演算子的な使い方ってSwiftだとできるんだろうか」と思い立った。
Test1.java
try {
final File file = new File("src\\test.txt");
try (final BufferedReader reader = new BufferedReader(new FileReader(file))) {
String str;
while((str = reader.readLine()) != null) {
System.out.println(str);
}
}
} catch (IOException e) {
e.printStackTrace();
}
(str = reader.readLine()) != null
の部分で、1行読み取った結果をstrに代入する。
代入演算子はその代入した値を返すので、つまりは1行読み取った結果の文字列とnullを比較することになる。
もっと単純なのだと、
Test2.java
int a = 1;
int b = a = 2;
これはaに2を代入した後で、a = 2は代入した値を返す。つまり、bには2が入るということ。
というわけで、Swiftでもやってみた。
test1.swift
var a = 10
var b = a = 10
print(a)
print(b)
すると。
10
()
bがタプルになった。
これ、ほんとにタプルか?ときになったので・・・
test1.swift
var a = 10
var b = a = 10
print(b == ())
すると。
True
本当にタプルだった。
(何でタプルを返すんだろう、って思ったけど気にしないことにした)
知らずにやってたらやらかしてたかも・・・と思ったのでメモ。