LoginSignup
2
0

More than 5 years have passed since last update.

Rubyは2つの変数の値入れ替えに別途変数が不要

Last updated at Posted at 2019-05-14

環境

読んでる本:たのしいRuby 4版
Ruby : ruby 2.5.0p0 (2017-12-25 revision 61468) [x86_64-darwin18]

変数の入れ替え

プログラミングの入門書にありがちな変数の入れ替え。
Javaで書くとこんな感じのやつです。
「そのまま代入しちゃうと値が消えちゃうからtmpが必要だよね」っていうやつです。

changeval.java
public static void main(String[] args) {
    int a = 10;
    int b = 20;
    System.out.println(a); // => 10
    System.out.println(b); // => 20

    int tmp = b;
    b = a;
    a = tmp;
    System.out.println(a); // => 20
    System.out.println(b); // => 10
}

Rubyだとtmp不要

Rubyだとtmpが必要ないって知って驚いたのが今回の話。
Rubyで多重代入を使って書くとこうなる。

changeval.rb

a = 10
b = 20
puts a  # =>10
puts b  # =>20

a, b = b, a
puts a  # =>20
puts b  # =>10

一瞬しか使わないとはいえ無駄な変数を作るのは面倒なので、Rubyはすげーなーって思いました。
(そもそも変数を入れ替える機会がどれだけあるのかという話は別の話)

2
0
1

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