splitの第2引数は分割数である。
しかし、
p "foo\nbar\nbuz".split(/\n/, 0) => ["foo", "bar", "buz"]
↑0の場合は分割数が0なのでなにもしないのではなく普通に分割。
p "foo\nbar\nbuz".split(/\n/, 2) ["foo", "bar\nbuz"]
↑分割数を満たさないときは、分割されずにそのまま
p "foo\nbar\nbuz".split(/\n/, 9) => ["foo", "bar", "buz"]
↑分割できる数を明らかに上回るときは、特にエラーにはならない。
ここから特別パターン
p "foo\nbar\nbuz\n\n".split(/\n/) => ["foo", "bar", "buz"]
↑指定しないとき、または0を指定したときは、配列の末尾に並ぶ空文字列の要素が省略される
p "foo\nbar\nbuz\n\n".split(/\n/, -1) => ["foo", "bar", "buz", "", ""]
↑この場合マイナスの場合はきちんと空文字も出てくれます。