Rubyのアスタリスク梱包と開梱の操作

Rubyは、アスタリスクを使用することができる*と、二重のアスタリスク**操作を開梱、いくつかの梱包を完了し、それらはスプラットのオペレータと呼ばれています。

2つのアスタリスクのスプラットシーン、必要であれば、上記の記事を参照して参照し、稀です。

スプラット演算子は配列が続く場合、アンパック動作が行われる配列:要素のリストをアンパック。関数を呼び出すと、基準の比較を渡すこのアンパック効果が反映させることができます。

def f(a,b,c,d)
  p "1.#{a}"
  p "2.#{b}"
  p "3.#{c}"
  p "4.#{d}"
end

arr=%w(aa bb cc dd)
f(*arr)

# 赋值解包:将数组解包成元素列表再赋值给arr变量
# 这过程中会创建一个新的数组保存解包后但要赋值的各元素
arr=*[1,2,3]

上方*arr後面と、スプラットオペレータが配列され、そのように、操作をアンパック四つの要素にアレイを開梱し、順次、B、C、Dパラメータに割り当てられません。

スプラットとのオペレータは、1つのまたは複数の要素が続く場合は、その後、パッケージの配列を実行します。これらの要素を保持するために、新しい配列を作成します。これはまた、時折割り当ての時に見ることができ、関数定義では、より一般的です。

def foo(a,b,*args)
  p a
  p b
  p args   #=> 打包成[3,4,5]赋值给参数args
end

foo(1,2,3,4,5)

より多くの古典的な例を開梱以下のパッキング:

a,*x=1,2,3    #=> a=1,x=[2,3]

a, (b, *c), *d = 1, [2, 3, 4], 5, 6
   #=> a=1,b=2,c=[3, 4],d=[5, 6]

おすすめ

転載: www.cnblogs.com/f-ck-need-u/p/10930383.html