ド忘れしていたRubyの基礎5選④

どうも、三町哲平です。

https://qiita.com/TeppeiMimachi/items/a0a449a1d2f0897fa6e2

ド忘れしていたRubyの基礎5選の第4弾です。

今回は、コチラの問題を解く際を想定
[Reverse Integer - LeetCode](https://leetcode.com/problems/reverse-integer/)

解き方は、コチラを参照
[Ruby Solution - LeetCode Discuss](https://leetcode.com/problems/reverse-integer/discuss/337885/Ruby-Solution)

# 1. 後置if

```ruby
# 普通のif文
if foo
  bar
end

# 後置ifを使ったif文
bar if foo
```
可読性の観点からも後置ifの多様には注意が必要です。

引用及び参考記事:[【Ruby】乱用厳禁！？後置ifで書くとかえって読みづらくなるケース - Qiita](https://qiita.com/jnchito/items/4e47559a4c821474233a)

# 2. ** 四則演算

```ruby
p 5**3
# => "125"
```
べき乗されます。
※上記の場合、5の3乗

引用及び参考記事:[四則演算 - 数値と四則演算 - Ruby入門](https://www.javadrive.jp/ruby/num/index3.html)

# 3. ppライブラリ
オブジェクトなどを見やすく出力するためのライブラリです。

```ruby:pによるpretty-printされてない出力
#<PP:0x81a0d10 @stack=[], @genspace=#<Proc:0x81a0cc0>, @nest=[0], @newline="\n",
 @buf=#<PrettyPrint::Group:0x81a0c98 @group=0, @tail=0, @buf=[#<PrettyPrint::Gro
up:0x81a0ba8 @group=1, @tail=0, @buf=[#<PrettyPrint::Text:0x81a0b30 @tail=2, @wi
dth=1, @text="[">, #<PrettyPrint::Group:0x81a0a68 @group=2, @tail=1, @buf=[#<Pre
ttyPrint::Text:0x81a09f0 @tail=1, @width=1, @text="1">], @singleline_width=1>, #
<PrettyPrint::Text:0x81a0a7c @tail=0, @width=1, @text=",">, #<PrettyPrint::Break
able:0x81a0a2c @group=2, @gensace=#<Proc:0x81a0cc0>, @newline="\n", @indent=1, @
tail=2, @sep=" ", @width=1>, #<PrettyPrint::Group:0x81a09c8 @group=2, @tail=1, @
buf=[#<PrettyPrint::Text:0x81a0950 @tail=1, @width=1, @text="2">], @singleline_w
idth=1>, #<PrettyPrint::Text:0x81a0af4 @tail=0, @width=1, @text="]">], @singleli
ne_width=6>], @singleline_width=6>, @sharing_detection=false>
```

```ruby:ppによるpretty-printされた出力
#<PP:0x40d0688
 @buf=
  #<PrettyPrint::Group:0x40d064c
   @buf=
    [#<PrettyPrint::Group:0x40d05d4
      @buf=
       [#<PrettyPrint::Text:0x40d0598 @tail=2, @text="[", @width=1>,
        #<PrettyPrint::Group:0x40d0534
         @buf=[#<PrettyPrint::Text:0x40d04f8 @tail=1, @text="1", @width=1>],
         @group=2,
         @singleline_width=1,
         @tail=1>,
        #<PrettyPrint::Text:0x40d053e @tail=0, @text=",", @width=1>,
        #<PrettyPrint::Breakable:0x40d0516
         @genspace=#<Proc:0x40d0656>,
         @group=2,
         @indent=1,
         @newline="\n",
         @sep=" ",
         @tail=2,
         @width=1>,
        #<PrettyPrint::Group:0x40d04e4
         @buf=[#<PrettyPrint::Text:0x40d04a8 @tail=1, @text="2", @width=1>],
         @group=2,
         @singleline_width=1,
         @tail=1>,
        #<PrettyPrint::Text:0x40d057a @tail=0, @text="]", @width=1>],
      @group=1,
      @singleline_width=6,
      @tail=0>],
   @group=0,
   @singleline_width=6,
   @tail=0>,
 @genspace=#<Proc:0x40d0656>,
 @nest=[0],
 @newline="\n",
 @sharing_detection=false,
 @stack=[]>
```
引用及び参考記事:[library pp (Ruby 3.0.0 リファレンスマニュアル)](https://docs.ruby-lang.org/ja/latest/library/pp.html)
引用及び参考記事:[【ruby】p pp puts print　違い。 - Qiita](https://qiita.com/Takahashiq/items/f5d84581d3a301a9c22f)

# 4. * 可変長引数

*をつければ引数を、配列に指定できます。

```ruby
#複数の引数を配列にする
def array(*a)
  pp a
end

> array(1,2)
#=> [1, 2] 
> array(1, 2, 3)
#=> [1, 2, 3]
```
引用及び参考記事:[メソッドの引数にアスタリスク - Qiita](https://qiita.com/super-mana-chan/items/ca728d90db7c53295b15)

# 5. ** オプション引数
**をつければ引数を、ハッシュに指定できます。

```ruby
#複数の引数をハッシュにする
def array(**a)
  pp a
end

> array(b: 1, c: 2)
#=> {:b=>1, :c=>2} 
> array(b: 1, c: 2, d: 3)
#=> {:b=>1, :c=>2, :d=>3}
```
引用及び参考記事:[メソッドの引数にアスタリスク - Qiita](https://qiita.com/super-mana-chan/items/ca728d90db7c53295b15)