ruby на рельсах конкатенация строк как php (. =) - PullRequest
2 голосов
/ 05 апреля 2011

im от php, в PHP я чрезмерно использую .= так, как это сделать в ruby?

Ответы [ 3 ]

6 голосов
/ 05 апреля 2011

Конкатенация строк выполняется с + в Ruby:

$ irb
irb(main):001:0> "hello" + " " + "world"
=> "hello world"
irb(main):002:0> foo = "hello "
=> "hello "
irb(main):003:0> foo += "world"
=> "hello world"

@ AboutRuby также упоминает оператор <<:

irb(main):001:0> s = "hello"
=> "hello"
irb(main):002:0> s << " world"
=> "hello world"
irb(main):003:0> s
=> "hello world"

Хотя его точка зрения о том, что + создает новую строку и << изменяет строку, может показаться небольшой точкой, это имеет большое значение, когда у вас может быть несколько ссылок на ваш строковый объект или если ваши строки растут до огромный через повторное добавление:

irb(main):004:0> my_list = [s, s]
=> ["hello world", "hello world"]
irb(main):005:0> s << "; goodbye, world"
=> "hello world; goodbye, world"
irb(main):006:0> my_list
=> ["hello world; goodbye, world", "hello world; goodbye, world"]
irb(main):007:0> t = "hello, world"
=> "hello, world"
irb(main):008:0> my_list = [t, t]
=> ["hello, world", "hello, world"]
irb(main):009:0> t += "; goodbye, world"
=> "hello, world; goodbye, world"
irb(main):010:0> my_list
=> ["hello, world", "hello, world"]

@ AboutRuby упомянул, что он может подумать о трех механизмах объединения строк; это напомнило мне о другом механизме, который более уместен, когда у вас есть массив строк, которые вы хотите объединить:

irb(main):015:0> books = ["war and peace", "crime and punishment", "brothers karamozov"]
=> ["war and peace", "crime and punishment", "brothers karamozov"]
irb(main):016:0> books.join("; ")
=> "war and peace; crime and punishment; brothers karamozov"

Метод .join() может спасти вас от написания ужасных циклов. :)

2 голосов
/ 05 апреля 2011

Используйте +=.или .concat("string to add")

1 голос
/ 05 апреля 2011

Это для конкатенации строк? Вы используете += в ruby ​​для объединения строк.

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