Dans mon petit bijou que j'ai une classe appelée Client
que je veux fonctionner comme ceci:mauvais nombre d'arguments erreur lors de la construction d'un api rubis chainable
client = Client.new
client.content_type('pages').content_type
Cela signifie que je veux définir une propriété puis attendre à immédiatement le récupérer dans la même chaîne. Voilà ce que j'ai jusqu'à présent:
class Client
attr_reader :content_type
def initialize(options = {})
@options = options
end
def content_type
@content_type
end
def content_type(type_id)
@content_type = type_id
self
end
end
Maintenant, quand je tente de lancer client.content_type('pages').content_type
je reçois:
wrong number of arguments (given 0, expected 1) (ArgumentError)
from chaining.rb:16:in `<main>'
Qu'est-ce que je fais mal? Comment est-ce que j'écris ceci correctement?
Pourriez-vous m'aider à améliorer le design de code? A quoi ressemblerait un meilleur design? –
@Amit Je suggère que 'content_type' soit' attr_accessor' de votre classe, donc vous pouvez faire 'client.content_type =" pages "' ou 'client.content_type # output" pages "'. –