そんなものは迷信に過ぎない。 はじめに ここ数週間で何度か「破壊的メソッドなのに!がついてない」「!がついてないのに副作用がある」といった言説を何度か目にする機会があった。 「破壊的」と「非破壊的」 a.hoge(b)のようにメソッド呼び出しをしたとき、aの状態に影響を及ぼすメソッドを、Rubyでは一般的に「破壊的」と呼びます。メソッド呼び出しで前の状態を壊して、別の状態にしてしまふからです。 言葉で説明してもぴんとこないかもしれないので、「ふたつの配列をくっつけたい」といふ要望に対して、破壊的なパターンと、破壊的ではないパターンのコードを紹介します。 破壊ではないパターン # ふたつの配列を用意する a = [0, 2, 4, 6, 8] b = [1, 3, 5, 7, 9] c = a + b # aとbを連結してcに代入 p a #=> [0, 2, 4, 6, 8] p b #=
![破壊的メソッド名には!をつけなければならない…なんて、誰が言ったの? - Qiita](https://cdn-ak-scissors.b.st-hatena.com/image/square/d7bdfc7ca7c42c81e0f804ac153e9525d93ba27d/height=288;version=1;width=512/https%3A%2F%2Fqiita-user-contents.imgix.net%2Fhttps%253A%252F%252Fcdn.qiita.com%252Fassets%252Fpublic%252Farticle-ogp-background-9f5428127621718a910c8b63951390ad.png%3Fixlib%3Drb-4.0.0%26w%3D1200%26mark64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTkxNiZoPTMzNiZ0eHQ9JUU3JUEwJUI0JUU1JUEzJThBJUU3JTlBJTg0JUUzJTgzJUExJUUzJTgyJUJEJUUzJTgzJTgzJUUzJTgzJTg5JUU1JTkwJThEJUUzJTgxJUFCJUUzJTgxJUFGJTIxJUUzJTgyJTkyJUUzJTgxJUE0JUUzJTgxJTkxJUUzJTgxJUFBJUUzJTgxJTkxJUUzJTgyJThDJUUzJTgxJUIwJUUzJTgxJUFBJUUzJTgyJTg5JUUzJTgxJUFBJUUzJTgxJTg0JUUyJTgwJUE2JUUzJTgxJUFBJUUzJTgyJTkzJUUzJTgxJUE2JUUzJTgwJTgxJUU4JUFBJUIwJUUzJTgxJThDJUU4JUE4JTgwJUUzJTgxJUEzJUUzJTgxJTlGJUUzJTgxJUFFJUVGJUJDJTlGJnR4dC1jb2xvcj0lMjMyMTIxMjEmdHh0LWZvbnQ9SGlyYWdpbm8lMjBTYW5zJTIwVzYmdHh0LXNpemU9NTYmdHh0LWNsaXA9ZWxsaXBzaXMmdHh0LWFsaWduPWxlZnQlMkN0b3Amcz01ZmI5NzNkYjNjNGM3MzczYzgyZWE2NzJhZWI4MmMxNw%26mark-x%3D142%26mark-y%3D112%26blend64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTYxNiZ0eHQ9JTQwdGFkc2FuJnR4dC1jb2xvcj0lMjMyMTIxMjEmdHh0LWZvbnQ9SGlyYWdpbm8lMjBTYW5zJTIwVzYmdHh0LXNpemU9MzYmdHh0LWFsaWduPWxlZnQlMkN0b3Amcz1jYWU5ZDMxN2UyZDIzZjAwMTUxODBiMzZiNThjZmIyOQ%26blend-x%3D142%26blend-y%3D491%26blend-mode%3Dnormal%26s%3D4ec8a3f3473e7aac5b4055a663511475)