splat在这做什么?

uzo*_*uzo 3 ruby splat

match, text, number = *"foobar 123".match(/([A-z]*) ([0-9]*)/)
Run Code Online (Sandbox Code Playgroud)

我知道这是在进行某种正则表达式匹配,但是splat在这里扮演什么角色,有没有办法在没有splat的情况下这样做,所以它不那么令人困惑?

Jon*_*eet 5

splat将正则表达式匹配结果(a MatchData有三组:整个模式,字母和数字)分解为三个变量.所以我们最终得到:

match = "foobar 123"
text = "foobar"
number = "123"
Run Code Online (Sandbox Code Playgroud)

没有splat,只有一个结果(the MatchData),所以Ruby不知道如何将它分配给三个独立的变量.