3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

学びや気づきの備忘録Advent Calendar 2023

Day 6

【Ruby Gold3.1詰まったシリーズ】可変長引数の値の取得

Last updated at Posted at 2023-12-05

はじめに

今回は可変長引数に関する内容です。メソッドを呼び出して可変長引数で値を受取る際、呼び出し側の引数が[]か()かで可変長引数の値の取得結果が異なっていたので簡単にまとめてみます。

確認してみた

環境はruby2.5.3です。
まず、可変長引数が設定されたメソッドを作成し実行する。

class Cls
  def Foo(*args)
    p args
    p *args
    p args[0]
  end
end

次に[]と()を引数としてFooメソッドをそれぞれ呼び出す。

irb(main):008:0> Cls.new.Foo [1,2,3]
[[1, 2, 3]]
[1, 2, 3]
[1, 2, 3]
irb(main):009:0> Cls.new.Foo(1,2,3)
[1, 2, 3]
1
2
3
1

出力された値に差異があった。

おわりに

確認した結果、呼び出し側の引数が()か[]かで可変長引数の値の取得結果が異なっていた。
可変長引数は配列に対して引数の値を格納し、配列を渡した場合は二重配列となるので注意が必要かもしれないです。もし誤っていたらご指摘いただけると助かります!

参考

3
0
0

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?