Скажем, у меня есть этот объект:Условные аргументы ключевых слов (Ruby 2.0)
class Post
def initialize(title: 'title', content: 'content')
@title = title
@content = content
end
end
, но я хотел бы добавить логику, как:
class Post
def initialize(title: 'title', content: 'content')
@title = title unless title.empty? # if it's empty I'd like to use the default value
@content = content unless content.empty?
end
end
В приведенном выше примере, как я назначить условно?
Ессенции ваш вопрос, является ли метод (а не только 'initialize') можно получить значения параметров по умолчанию оно прошло. Вы можете получить метод вызова с помощью [Kernel # caller] (http://www.ruby-doc.org/core-2.0.0/Kernel.html#method-i-caller) и некоторую информацию о аргументах с помощью [Метод @ # параметры] (http://www.ruby-doc.org/core-2.0.0/Method.html#method-i-parameters). Учитывая, что значения по умолчанию могут быть вычислены и что у Ruby нет причин сделать их доступными для вызываемого метода, я очень сомневаюсь, что есть способ получить их от вызываемого метода. Однако, .. –
... вы можете взглянуть на метод get_args для [merb gem] (http://rubydoc.info/github/merb/merb/master/GetArgs). –