Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/22.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,这是我的数组和自定义方法,用于在不使用reverse方法的情况下反转数组输出。不知道它在哪里坏了,试着在控制台中运行,没有骰子 numbers = [1, 2, 3, 4, 5, 6] def reversal(array) do |item1, item2| item2 <=> item1 end p reversal(numbers) 这里有一个方法来处理这个问题。这不是很有效,但很有效 def reversal(array) reversed = []

这是我的数组和自定义方法,用于在不使用reverse方法的情况下反转数组输出。不知道它在哪里坏了,试着在控制台中运行,没有骰子

numbers = [1, 2, 3, 4, 5, 6]

def reversal(array)
  do |item1, item2| item2 <=> item1
end

p reversal(numbers)

这里有一个方法来处理这个问题。这不是很有效,但很有效

def reversal(array)
    reversed = []
    loop do
        reversed << array.pop
        break if array.empty?
    end
    reversed
end

这里有一个方法来处理这个问题。这不是很有效,但很有效

def reversal(array)
    reversed = []
    loop do
        reversed << array.pop
        break if array.empty?
    end
    reversed
end

有很多方法。。。这里有三个1是我的首选

numbers6 = [1, 2, 3, 4, 5, 6]
numbers5 = [1, 2, 3, 4, 5]
对于以下我的修订版的所有方法

一,

二,

三,


有很多方法。。。这里有三个1是我的首选

numbers6 = [1, 2, 3, 4, 5, 6]
numbers5 = [1, 2, 3, 4, 5]
对于以下我的修订版的所有方法

一,

二,

三,


有很多方法可以做到这一点

1常规方式 2使用流行音乐 3使用pop和loop
有很多方法可以做到这一点

1常规方式 2使用流行音乐 3使用pop和loop a=[1,2,3,4,5] b=[] a、 length.times{i|b[5,4,3,2,1] a=[1,2,3,4,5] b=[] a、 length.times{i|b[5,4,3,2,1]

在可以考虑它被破坏之前,它必须已经处于工作状态,首先,你明白什么?你是想使数组反向排序,还是只是颠倒?就像,如果你有数组[1,3,2],是正确的输出[3,2,1]或[2,3,1]。?此外,这里还有一个相当严重的语法错误……do和do | stuff |构造是方法调用的一部分,而不是方法定义。当然,您可以从另一个方法体中调用一个方法,但您没有这样做。此外,无论您的示例是什么,每个do都需要相应的结尾。@westcharlie doe我们不能澄清这个问题,因为[1,2,3,4,5,6]已经是有序的,所以从现在开始倒转和从“有序”开始倒转是一样的。如果你有一个列表是[1,2,4,5,6,3],你希望结果是[6,5,4,3,2,1]还是[3,6,5,4,2,1]?在任何情况下,方法定义都是以def开头,以end结尾的,而方法调用是调用方法的地方。从def reversalarray到end是一个方法定义,虽然不是有效的。最后一行是一个方法调用,实际上是两个方法调用,一个调用reverse,一个调用p。方法调用可以包括“b”lock'虽然很多人不这样做,但它是do和end或{and}之间的一组代码就像在下面的ReqRri的答案中,他把一个块传递到方法环之前,可以考虑它被打破了,它必须已经处于工作状态,首先,你明白什么?你是试图使数组反向排序,或者只是颠倒?就像,如果你有数组[1,3,2],是正确的输出[3,2,1]或[2,3,1]。?此外,这里还有一个相当严重的语法错误……do和do | stuff |构造是方法调用的一部分,而不是方法定义。当然,您可以从另一个方法体中调用一个方法,但您没有这样做。此外,无论您的示例是什么,每个do都需要相应的结尾。@westcharlie doe我们不能澄清这个问题,因为[1,2,3,4,5,6]已经是有序的,所以从现在开始倒转和从“有序”开始倒转是一样的。如果你有一个列表是[1,2,4,5,6,3],你希望结果是[6,5,4,3,2,1]还是[3,6,5,4,2,1]?在任何情况下,方法定义都是以def开头,以end结尾的,而方法调用是调用方法的地方。从def reversalarray到end是一个方法定义,虽然不是有效的。最后一行是一个方法调用,实际上是两个方法调用,一个调用reverse,一个调用p。方法调用可以包括“b”lock'虽然很多人不这样做,但它是do和end或{and}之间的一组代码。就像下面@roychri的回答一样,他将一个块传递给了roychri方法。我仍然很困惑,如果组合比较运算符不颠倒对象的顺序,它将如何适应所有这些。comparison运算符用于排序。您要做的是反转数组,这样,如果数组包含[4,2,8],它将变成[8,2,4]。在这种情况下,您无法对其进行排序。只需取最后一个并首先进行排序,依此类推。@westcoast组合比较运算符不适用于所有这一切,它是完全无关的。该运算符只是组合成一个运算符;因此,它不返回true或false,而是返回-1表示“a小于b”,0表示“a等于eq”ual到b'或'a'的+1大于b'。当两个方法都返回反向数组时,第一个方法清空数组:数组=[1,2,3];反向数组=>[3,2,1];数组=[]。我认为您应该保持arr不变,或者根据西海岸Charlie的需要将其替换为反转的arr,但肯定不能将其替换为空数组。谢谢roychri。我仍然很困惑,如果组合比较运算符不反转对象的顺序,它如何适合所有这些。comparison运算符用于排序。您要做的是反转数组,以便如果数组包含[4,2,8],它将变为[8,2,4]。在这种情况下,您无法对其进行排序。只需使用最后一个数组并将其
首先,依此类推。组合比较运算符不适用于所有这一切,它是完全不相关的。该运算符只是一个运算符的组合;因此,它不会返回true或false,而是返回-1表示“a小于b,0`表示“a等于b”,或+1表示“a大于b”。虽然这两个方法都返回反向数组,但第一个方法会清空数组:array=[1,2,3];反向阵列=>[3,2,1];数组=[]。我认为您应该保持arr不变,或者根据西海岸Charlie的需要将其替换为arr反转,但肯定不能将其替换为空数组。
def my_rev(numbers)
  numbers.reverse_each.to_a
end
def my_rev(numbers)
  numbers.each_index.map { |i| numbers[-1-i] }
end
def my_rev(numbers)
  (numbers.size/2).times.with_object(numbers.dup) do |i,a| 
    a[i], a[-1-i] = a[-1-i] , a[i]
  end
end
a=[1,2,3,4,5,6,7,8]
i=1
while i <= a.length/2 do
  temp = a[i-1]
  a[i-1] =  a[a.length-i]
  a[a.length-i] = temp
  i+=1
end
a=[1,2,3,4,5,6]
i=0
b=[]
t=a.length
while i< t do
  b << a.pop
  i+=1
end
a=[1,2,3,4,5,6]
b=[]
loop do
  b << a.pop
  break if a.empty?
end