Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/25.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/9/loops/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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.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 使用';每个';有时是强制性的,有时不是CSV_Ruby_Loops_Csv_Each - Fatal编程技术网

Ruby 使用';每个';有时是强制性的,有时不是CSV

Ruby 使用';每个';有时是强制性的,有时不是CSV,ruby,loops,csv,each,Ruby,Loops,Csv,Each,我正在使用csv gem,如下所示 一旦我计算了CSV.parse,就必须使用每个循环得到的数组。这项工作: csv = CSV.parse("1,2,3") csv.each {|row| print row, ", ", row.class, ", size ", row.size, "\n"} 虽然这不起作用: csv {|row| print row, ", ", row.class, ", size ", row.size, "\n"} 当直接使用表单CSV.parse时,可以使

我正在使用csv gem,如下所示

一旦我计算了
CSV.parse
,就必须使用
每个
循环得到的
数组
。这项工作:

csv = CSV.parse("1,2,3")

csv.each {|row| print row, ", ", row.class, ", size ", row.size, "\n"}
虽然这不起作用:

csv {|row| print row, ", ", row.class, ", size ", row.size, "\n"}
当直接使用表单
CSV.parse
时,可以使用
每个

CSV.parse("1,2,3").each {|row| print row, ", ", row.class, ", size ", row.size, "\n"}
或否:

CSV.parse("1,2,3") { |row| print row, ", ", row.class, ", size ", row.size, "\n"}
给出了相同的结果。原因是什么?

这一点得到了明确的解释:

  • CSV::parse
    当使用块调用时,将对行进行迭代
  • CSV::parse
    当在没有块的情况下调用时,返回一个行数组(然后可以对其进行迭代)
这一点有明确的解释:

  • CSV::parse
    当使用块调用时,将对行进行迭代
  • CSV::parse
    当在没有块的情况下调用时,返回一个行数组(然后可以对其进行迭代)

不清楚代码的哪一部分对应于问题的哪一部分。你能把你的代码分成小块吗?如果你能指出你不清楚代码的哪一部分,那将是很有帮助的。这样,Ruby开发人员就可以为将来的读者改进文档。@sawa-根据您的评论更新了问题。@JörgWMittag-我是Ruby的初学者。请看我对你答案的评论。不清楚你的代码的哪一部分对应于你问题的哪一部分。你能把你的代码分成小块吗?如果你能指出你不清楚代码的哪一部分,那将是很有帮助的。这样,Ruby开发人员就可以为将来的读者改进文档。@sawa-根据您的评论更新了问题。@JörgWMittag-我是Ruby的初学者。请看我对你答案的评论。一方面,我不完全确定我是否掌握了文档中的描述。有了这种草率的理解(考虑到我的第1部分是你的第二个例子,以及VeeVeSa),我觉得在你的第一个例子中,<>代码>每个< /C> >都不能工作,如<代码> CSV::解析< /代码>已经迭代。如果你熟悉C++,爪哇,C等语言。♯, 等等,您可以将其视为同一方法的两个不同的“重载”。这在Ruby中是不可能的,当然,Ruby不支持重载,但是一个方法可以检查它自己的参数并根据它发现的内容执行不同的代码路径。如果不传递块,几乎所有迭代器方法都将返回一个iterable对象。您可以在这里看到实际代码:一方面,我不完全确定我是否掌握了文档中的描述。有了这种草率的理解(考虑到我的第1部分是你的第二个例子,以及VeeVeSa),我觉得在你的第一个例子中,<>代码>每个< /C> >都不能工作,如<代码> CSV::解析< /代码>已经迭代。如果你熟悉C++,爪哇,C等语言。♯, 等等,您可以将其视为同一方法的两个不同的“重载”。这在Ruby中是不可能的,当然,Ruby不支持重载,但是一个方法可以检查它自己的参数并根据它发现的内容执行不同的代码路径。如果不传递块,几乎所有迭代器方法都将返回一个iterable对象。您可以在此处看到实际代码: