Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/59.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 on rails Ruby-更优雅的数组_Ruby On Rails_Arrays_Append_Each - Fatal编程技术网

Ruby on rails Ruby-更优雅的数组

Ruby on rails Ruby-更优雅的数组,ruby-on-rails,arrays,append,each,Ruby On Rails,Arrays,Append,Each,最优雅的方法是什么?使用数组#zip valrow = [ 0, 0.125, 0.25, 0.375, 0.5, 0.625, 0.75, 0.875] lblrow = [48, 8539, 188, 8540, 189, 8541, 190, 8542] opts = [] (0..7).each {|i| opts.push([lblrow[i].chr(Encoding::UTF_8), valrow[i]]) } 使用数组#zip valrow = [ 0, 0.125

最优雅的方法是什么?

使用
数组#zip

valrow = [ 0, 0.125, 0.25, 0.375, 0.5, 0.625, 0.75, 0.875]
lblrow = [48,  8539,  188,  8540, 189,  8541,  190,  8542]
opts = []
(0..7).each {|i| opts.push([lblrow[i].chr(Encoding::UTF_8), valrow[i]]) }
使用
数组#zip

valrow = [ 0, 0.125, 0.25, 0.375, 0.5, 0.625, 0.75, 0.875]
lblrow = [48,  8539,  188,  8540, 189,  8541,  190,  8542]
opts = []
(0..7).each {|i| opts.push([lblrow[i].chr(Encoding::UTF_8), valrow[i]]) }

或者使用
collect.with_index

valrow = [ 0, 0.125, 0.25, 0.375, 0.5, 0.625, 0.75, 0.875]
lblrow = [48,  8539,  188,  8540, 189,  8541,  190,  8542]
opts = lblrow.map { |c| c.chr(Encoding::UTF_8) }.zip(valrow)

或者使用
collect.with_index

valrow = [ 0, 0.125, 0.25, 0.375, 0.5, 0.625, 0.75, 0.875]
lblrow = [48,  8539,  188,  8540, 189,  8541,  190,  8542]
opts = lblrow.map { |c| c.chr(Encoding::UTF_8) }.zip(valrow)
在这种情况下,可以使用对象:

valrow = [ 0, 0.125, 0.25, 0.375, 0.5, 0.625, 0.75, 0.875]
lblrow = [48,  8539,  188,  8540, 189,  8541,  190,  8542]
opts = valrow.collect.with_index { |val,index| [lblrow[index].chr(Encoding::UTF_8), val] }
在这种情况下,可以使用对象:

valrow = [ 0, 0.125, 0.25, 0.375, 0.5, 0.625, 0.75, 0.875]
lblrow = [48,  8539,  188,  8540, 189,  8541,  190,  8542]
opts = valrow.collect.with_index { |val,index| [lblrow[index].chr(Encoding::UTF_8), val] }

请你解释一下好吗?我无法解释得更好。我希望你知道这一点。我不明白你为什么否决了这一点,但这是你的解释。这里的一般规则是,你应该在你的答案中包含你的推理,而不是链接到可能发生变化的外部来源,这意味着你的答案是有时间戳的解决方案。ruby文档在这方面非常简洁,我觉得他们没有解释为什么zip更好。
Array\zip
更好,因为它小巧、简单、内置,可以直接向任何使用函数式语言的人展示您的目标。此外,理论上(我没有时间进行基准测试)使用
Array#zip
允许解释器提供一些优化,这在“正常”代码中很难检测到。此外,如果您发现任何其他答案更具可读性,则向上投票,而不是向下投票您认为“不可读”的答案。关于“这里的一般规则是,您应该在答案中包含您的推理,而不是链接到可能会改变的外部来源”,我已将官方文件链接到语言的确切版本,所以它不能改变,因为Ruby 2.2.0现在已经发布了,而且它的文档从那时起是不变的。请你解释一下,我不能解释得更好。我希望你知道这一点。我不明白你为什么否决了这一点,但这是你的解释。这里的一般规则是,你应该在你的答案中包含你的推理,而不是链接到可能发生变化的外部来源,这意味着你的答案是有时间戳的解决方案。ruby文档在这方面非常简洁,我觉得他们没有解释为什么zip更好。
Array\zip
更好,因为它小巧、简单、内置,可以直接向任何使用函数式语言的人展示您的目标。此外,理论上(我没有时间进行基准测试)使用
Array#zip
允许解释器提供一些优化,这在“正常”代码中很难检测到。此外,如果您发现任何其他答案更具可读性,则向上投票,而不是向下投票您认为“不可读”的答案。关于“这里的一般规则是,您应该在答案中包含您的推理,而不是链接到可能会改变的外部来源”,我已将官方文件链接到语言的确切版本,所以它不能改变,因为Ruby 2.2.0现在已经发布,而且它的文档从那时起是不变的。