Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
什么是*&引用;在这个递归ruby函数中是什么意思?_Ruby - Fatal编程技术网

什么是*&引用;在这个递归ruby函数中是什么意思?

什么是*&引用;在这个递归ruby函数中是什么意思?,ruby,Ruby,我阅读了这段关于quicksort的代码,它为Array类提供了猴子补丁 class Array def quicksort return [] if empty? pivot = delete_at(rand(size)) left, right = partition(&pivot.method(:>)) return *left.quicksort, pivot, *right.quicksort end end 我不知道左边*开

我阅读了这段关于
quicksort
的代码,它为
Array
类提供了猴子补丁

class Array
  def quicksort
    return [] if empty?

    pivot = delete_at(rand(size))
    left, right = partition(&pivot.method(:>))

    return *left.quicksort, pivot, *right.quicksort
  end
end
我不知道左边
*开头的星号(
*
)是什么。快速排序
。我们不能只用
左。快速排序吗?

星形(在本例中)代表数组解包。其背后的思想是,您希望获得一个包含给定元素的数组,而不是数组、元素、数组的数组:


*获取参数列表并将其拆分为单个元素。 这允许您返回一个未嵌套的数组,即使左侧和右侧本身都返回一个数组

关于我们不能只使用左。快速排序你试过了吗

def a()
  return *[1,2,3], 4, *[5,6]
end

def b()
 return [1,2,3], 4, *[5,6]
end

b()
=> [[1, 2, 3], 4, 5, 6]
a()
=> [1, 2, 3, 4, 5, 6]

如果没有星号,将返回三个值。。。第一个和最后一个值将是具有多个值的单个数组

[array1], pivot, [array2]
带星号的数组值将作为单独的组件返回

array1_value_1, array1_value_2, array1_value_3, ..., pivot, array2_value_1, array2_value2, array2_value_3, ...

如果一个问题是重复的,并且你真的想得到一些原始的反馈,那么你应该去ruby IRC的一个渠道询问。您甚至不必拥有IRC客户端,这里有基于web的访问,例如:。还是红宝石
array1_value_1, array1_value_2, array1_value_3, ..., pivot, array2_value_1, array2_value2, array2_value_3, ...