環境
読んでる本:たのしい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はすげーなーって思いました。
(そもそも変数を入れ替える機会がどれだけあるのかという話は別の話)