Как инициализировать объект и установить атрибуты с нуля с помощью Ruby? - PullRequest
1 голос
/ 14 марта 2011

Мне бы хотелось, чтобы этот объект назывался foo, а foo и otherattr

.

Я думал попробовать что-то вроде

foo = nil
foo.name = "lalala"
foo.otherattr = "lelele"

Но я продолжаю получать

NoMethodError (undefined method `name' for nil:NilClass):

Я не хочу использовать модели, я хочу, чтобы это было просто на runtime

Ответы [ 2 ]

4 голосов
/ 14 марта 2011

Вы можете использовать OpenStruct, чтобы получить этот тип поведения. Вы сказали, что «не хотите использовать модель», но я не уверен, что именно вы подразумеваете под этим. Использование OpenStruct позволит вам получить желаемую функциональность, по крайней мере, не написав свой собственный класс:

require 'ostruct'
foo = OpenStruct.new
foo.name = "lalala"
foo.name
=> "lalala"
1 голос
/ 14 марта 2011

Если вам не нужен класс, вы можете сделать это:

foo = Object.new
class << foo
  attr_accessor :name, :other
end

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