Эквивалент в ruby ​​оператора PHP. =? - PullRequest
1 голос
/ 31 мая 2011

Я хочу объединить строку в цикле, как это, но в 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;
?>

Мне также интересно узнать, как называется имя оператора типа. =Я могу Google лучше искать эти вещи.

Используя Ruby 1.8.6.

Ответы [ 4 ]

5 голосов
/ 31 мая 2011

Вы ищете Ruby's String#<<.

Итак, ваш код может выглядеть так:

variable << "fizz\n"

Вот документация для метода << (он же concat). </p>

1 голос
/ 31 мая 2011

Я не знаю 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

0 голосов
/ 01 июня 2011

Если проблема 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
0 голосов
/ 01 июня 2011

Есть ли реальная причина, по которой вам нужно решить это таким образом?Это можно выразить в 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, поэтому мы можем перебирать элементы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...