LoginSignup
0
0

More than 3 years have passed since last update.

Swiftの代入演算子ってタプルを返すんだなって話

Posted at

代入演算子の動きが違うんだなあ的なちょっとしたメモ
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

本当にタプルだった。
(何でタプルを返すんだろう、って思ったけど気にしないことにした)
知らずにやってたらやらかしてたかも・・・と思ったのでメモ。

0
0
2

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
0
0