Проблема с объединением строк в Ruby - PullRequest
7 голосов
/ 06 декабря 2010

Это работает

irb(main):001:0> name = "Rohit " "Sharma"
=> "Rohit Sharma"

Но это не

irb(main):001:0> fname = "Rohit "
=> "Rohit "
irb(main):002:0> lname = "Sharma"
=> "Sharma"
irb(main):003:0> name = fname lname

выдает эту ошибку

NoMethodError: undefined method `fname' for main:Object
from (irb):3

Пожалуйста, предоставьте несколько предложений. Заранее спасибо.

UPDATE

После получения ответов я написал сообщение в блоге . Пожалуйста, проверьте это.

Ответы [ 3 ]

4 голосов
/ 06 декабря 2010

Ошибка связана с тем, что fname должна быть функцией, чтобы это работало.Вместо этого попробуйте

name = fname + lname

или даже

name = "#{fname}#{lname}"

, но там, где у вас было

name = "Rohit " "Sharma"

, это особый случай, так как Ruby автоматически объединит две строки.

2 голосов
/ 07 декабря 2010

Когда вы делаете

name = "Rohit " "Sharma"

Вы не создаете два объекта String, которые затем объединяются, чтобы создать одну строку. Вместо этого Ruby (интерпретатор / компилятор / все что угодно) просматривает код и объединяет его перед созданием одного объекта String.

Так что вы можете сделать

name = "Rohit " "Sharma"

но не

first_name_plus_space = "Rohit "
last_name = "Sharma"
name = first_name_plus_space last_name
0 голосов
/ 06 декабря 2010

Просто поместите между ними +, например,

name = fname + lname

string + string определено, чтобы вернуть новую строку, содержащую два входа, соединенных вместе.

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