Arrays Don';我不太明白这个leetcode问题

Arrays Don';我不太明白这个leetcode问题,arrays,ruby,loops,while-loop,Arrays,Ruby,Loops,While Loop,这可能不一定是Ruby独有的,但我有一个挥之不去的问题,我最近遇到了Ruby # @param {Integer[]} nums # @return {Integer[]} def running_sum(nums) i = 0 while i < nums.length - 1 nums[i+1] = nums[i] + nums[i+1] i += 1 end nums end #@param{Integer[]}num

这可能不一定是Ruby独有的,但我有一个挥之不去的问题,我最近遇到了Ruby

# @param {Integer[]} nums
# @return {Integer[]}
def running_sum(nums)
    i = 0
    while i < nums.length - 1
        nums[i+1] = nums[i] + nums[i+1]
        i += 1
    end
    nums
end
#@param{Integer[]}nums
#@return{Integer[]}
def运行总量(nums)
i=0
而我
这样做的目的是收集一个“运行总和”。我理解逻辑,但这种语法让我感到困惑。以下是我的理解:

“此方法称为running_sum,它有一个名为nums的数组(可能包含数字)。我们将从零开始计算这些数字。虽然我们正在计算的数字小于数组中的数字总数减去1,但我们将循环遍历起点和后面的一个数组位置。我们还将在循环遍历时将下面的数字添加到所携带的总数中。我们的最终总数等于我们计算的位置在数组中循环后结束。显示最终总数。我们在这里完成“

我相信我理解了整个逻辑,但是为了复制,我想知道为什么这里使用字母I。据我所知,它类似于我们在代数中使用的变量。我的理解准确吗?还是我就差一点

我想知道为什么这里用我这封信

i
通常是命令式编程中的标准“计数器”变量名,是“索引”的缩写(例如,索引处的数组
i
nums[i]

我想知道为什么这里用我这封信

i
通常是命令式编程中的标准“计数器”变量名,是“索引”的缩写(例如,索引处的数组
i
nums[i]

顺便说一下,如果运行_sums是一个类方法而不是一个实例方法会更好

def self.running_sum(nums) 
  #etc ...
end
让你做

某个班级的学生

您需要记住Ruby不是强类型的

大多数其他语言都是强类型的,java,C++,C++,PASCAL,COBOL,Delphi,VisualBasic要命名一小部分变量,您需要在使用之前定义一个变量名,并将变量类型设置为类似整数、字符串或十进制的值,然后该变量将保留一个只能接受您设置的类型值的内存插槽。 在强类型语言中,您可以提供一个变量名并随意调用它,但将其定义为整数,它将只接受整数。e、 g.

var MyWord:integer将意味着您只能分配整数。在某些语言中,只有正整数,负整数会有不同的类型。将有一个编译器不会生成exe或任何最终结果,如果您试图分配错误类型的值,就会抛出一个错误这在Ruby中不是这样的

在Ruby中,您可以在任何时候组合一个单词并将任何类型的值填入其中,并且仅仅因为您给变量一个名称(如my_number),它不会阻止有人将单词或字母填入其中,如my_number=“一只猫坐在墙上”,这是完全有效的,显然不是一个数字

是的,它有点像代数,字母i通常表示整数类型,但在Ruby中要小心,因为它可能是任何类型,它只是一个包含0和1的内存块

上面的说法并不完全正确,但它应该给你一个正确的想法

顺便说一下,如果运行_sums是一个类方法而不是一个实例方法会更好

def self.running_sum(nums) 
  #etc ...
end
让你做

某个班级的学生

您需要记住Ruby不是强类型的

大多数其他语言都是强类型的,java,C++,C++,PASCAL,COBOL,Delphi,VisualBasic要命名一小部分变量,您需要在使用之前定义一个变量名,并将变量类型设置为类似整数、字符串或十进制的值,然后该变量将保留一个只能接受您设置的类型值的内存插槽。 在强类型语言中,您可以提供一个变量名并随意调用它,但将其定义为整数,它将只接受整数。e、 g.

var MyWord:integer将意味着您只能分配整数。在某些语言中,只有正整数,负整数会有不同的类型。将有一个编译器不会生成exe或任何最终结果,如果您试图分配错误类型的值,就会抛出一个错误这在Ruby中不是这样的

在Ruby中,您可以在任何时候组合一个单词并将任何类型的值填入其中,并且仅仅因为您给变量一个名称(如my_number),它不会阻止有人将单词或字母填入其中,如my_number=“一只猫坐在墙上”,这是完全有效的,显然不是一个数字

是的,它有点像代数,字母i通常表示整数类型,但在Ruby中要小心,因为它可能是任何类型,它只是一个包含0和1的内存块

上面的说法并不完全正确,但它应该给你一个正确的想法

我想知道为什么这里用我这封信

这是一个懒惰的老习惯

在这里,您正在处理一个整数是很有代表性的,为了简单的代码练习,这是可以接受的

但是,您可以在自己的代码中做得更好

在计算机科学中只有两件困难的事情:缓存失效和命名

--菲尔·卡尔顿

在抽象编码练习中,如果没有实际应用的上下文,很难正确命名事物。因此,作者用“整数”作为名称,并将其缩短。但是,当你在现实世界中应用这一点时,你会有一个用例,它可以而且应该激发你对变量“类型”之外的事物的命名

这不是特定于ruby的,但是ruby社区(我发现)比其他社区更倾向于
def self.running_sum(nums) 
  #etc ...
end