小编Pla*_*rob的帖子

如何在Ruby中替换for循环?

在Ruby中,使用for循环是一种糟糕的风格.这通常被理解.推荐给我的风格指南:(https://github.com/bbatsov/ruby-style-guide#source-code-layout)说:

"永远不要使用,除非你确切知道为什么.大部分时间都应该使用迭代器.for是按每个方式实现的(所以你要添加一个间接级别),但有一个扭曲 - 因为没有介绍新的范围(与每个范围不同)和在其区块中定义的变量将在其外部可见."

给出的例子是:

arr = [1, 2, 3]

#bad
for elem in arr do
  puts elem
end

# good
arr.each { |elem| puts elem }
Run Code Online (Sandbox Code Playgroud)

我已经研究过,我找不到关于如何模拟一个for循环的解释,该循环提供了一个迭代值,我可以传递给场所或执行算术运算.例如,我将替换什么:

for i in 0...size do
  puts array1[i]
  puts array2[size-1 - i]
  puts i % 2
end
Run Code Online (Sandbox Code Playgroud)

如果它是一个阵列很容易,但我经常需要当前位置用于其他目的.有两种简单的解决方案,我很想念,或者情况需要.此外,我听到人们谈论,就好像从来没有需要它.那么他们的解决方案是什么呢?

可以改进吗?什么是解决方案,如果有的话?谢谢.

ruby for-loop

9
推荐指数
1
解决办法
745
查看次数

c和c ++中最快的文件输出

我正在帮助某人提出有关在C中输出的问题,而我无法回答这个看似简单的问题我想用答案(在我的回答中),即:

在C/C++中输出文件的最快方法是什么?

我使用C++和Java完成了素数生成和数学算法优化的大量工作,这对我来说有时是最大的劫持 - 我有时需要移动很多文件并且速度很快.

请原谅我,如果这已经得到回答,但我一直在寻找google和SO一段时间无济于事.

我不希望有人做基准测试的工作 - 但有几种方法可以存档,我怀疑我知道这一切.

总结一下,

有什么方法可以用C和C++输出到文件?

哪些是更快的?

显然从控制台重定向是非常糟糕的.任何简单的比较printf,cout,fputc,等会有所帮助.

编辑:

从评论中,

cout和printf有一个很好的基线测试: 混合cout和printf以获得更快的输出

这是一个很好的开始,但不是我要问的最佳答案.例如,它不处理评论中提到的std :: ostreambuf_iterator <>,如果这是可能的话.它也不处理fputc或提到控制台重定向(相比之下有多糟糕)(不是它需要)

编辑2:

此外,为了争论我的历史案例,你可以假设输出几乎无限量的数据(程序在较新的英特尔i7上运行数天,产生千兆字节的文本)

临时存储在这里只是非常有用 - 你不能轻易地缓冲千兆字节的数据.

c c++ io file-io

7
推荐指数
1
解决办法
3047
查看次数

Ruby Inte和整数值的评估

在某些情况下,我发现自己需要在一些ruby脚本中编写一个相当冗长的if语句.

声明看起来像这样:

if long_var_name == 0 && very_different_name == 0 && other_third_var == 0 && additional_variable == 0 && name_five == 0 && longest_variable_name_six == 0
  # (possibly even more conditions) 
  # do stuff here...
end
Run Code Online (Sandbox Code Playgroud)

似乎必须有一种更优雅的方式来做到这一点.

问题是,if并且and用谷歌作为基本的英语单词进行研究并不容易.所以我空手而归.

有没有人知道缩短这种情况的方法?当你有更多的东西时,它可能成为一个噩梦.

  • 有时变量重命名不是一种选择.
  • 这些名字有时会大不相同.

注意:我找到了一个针对OR类似情况的聪明解决方案:

用于字符串值的Ruby多重OR评估

ruby if-statement

0
推荐指数
1
解决办法
298
查看次数

标签 统计

ruby ×2

c ×1

c++ ×1

file-io ×1

for-loop ×1

if-statement ×1

io ×1