我想在循环中连接一个字符串,就像这样,但是在Ruby中:
$fizz = file_get_contents($_SERVER['argv'][1]);
$output = "";
for($i=1;$i<=$fizz;$i++) {
if($i % 3 == 0 && !($i % 5 ==0)) {
$output .= "fizz\n";
}
else if($i % 5 == 0 && !($i % 3 ==0)) {
$output .= "buzz\n";
}
else if($i % 3 == 0 && $i % 5 == 0) {
$output .= "FizzBuzz\n";
}
}
print $output;
?>
我也有兴趣了解“。=”类型操作符的名称,以便我可以更好地搜索这些内容。
使用Ruby 1.8.6。
答案 0 :(得分:5)
您正在寻找Ruby的String#<<
。
因此,您的代码可能如下所示:
variable << "fizz\n"
以下是&lt;&lt;的详细信息{3}} (又名concat)方法。
答案 1 :(得分:1)
我不知道Ruby,但快速搜索Ruby String Concatenation
(运算符不是真正的运算符(PHP只是..特殊的,不一定是好的类型),它被称为字符串连接)给出以下内容:
myString = "Welcome " + "to " + "Ruby!"
- 大多数语言的标准连接。
myString = "Welcome " "to " "Ruby!"
- 省略+符号
myString = "Welcome " << "to " << "Ruby!"
- c ++ cout
样式。
myString
的内容全部为"Welcome to Ruby"
。
也许你甚至可以做+=
(等同于.=
)
注意冻结字符串..显然。
更多信息:http://www.techotopia.com/index.php/Ruby_String_Concatenation_and_Comparison
答案 2 :(得分:0)
您是否需要以这种方式解决问题?这可以用Ruby表示:
(1..100).each do |number|
if number % 15 == 0
puts "#{number} FizzBuzz"
elsif number % 5 == 0
puts "#{number} Buzz"
elsif number % 3 == 0
puts "#{number} Fizz"
end
end
使用(1..100)是一个混合在Enumerable
中的范围,因此我们可以迭代这些项目。
答案 3 :(得分:0)
如果fizzbuzz问题允许打印所有数字(正如某些解释所做的那样),那么这里是上面Caley Woods示例的变体,展示了case语句返回值的方式
(1..100).each do |number|
puts number.to_s << case 0
when number % 15
" FizzBuzz"
when number % 5
" Buzz"
when number % 3
" Fizz"
else
""
end
end