相当于PHP的。=运算符的ruby?

时间:2011-05-31 18:39:24

标签: php ruby

我想在循环中连接一个字符串,就像这样,但是在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。

4 个答案:

答案 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