while loop end delete create begin array ruby while-loop integer conditional typeerror

loop - ruby select



Ruby ''is_a?'' clase o módulo requerido(TypeError) (1)

Estoy jugando con Ruby y tratando de crear un pequeño programa de cuentas bancarias. Cuando ejecuto esta línea particular de código que se ejecuta dentro de create_account:

unless @response.is_a? Integer && @response.to_str.length == 4 puts "Your response must be 4 numbers in length." create_account else @pin = @response puts "Your pin has been set." end

Me sale esta respuesta:

bank_account.rb:24:in ''is_a?'':class or module required (TypeError) from bank_account.rb:24:in ''create_account'' from bank_account.rb:47:in ''<main>''

No puedo entender exactamente qué está pasando, pero estoy incluyendo el resto de mi código. Está incompleto, obviamente porque estoy atrapado en esta parte. Realizo un ciclo de tiempo y entro en ''Crear cuenta'' para iniciar el método create_account. Mi objetivo es ejecutar el condicional y requerir que el usuario escriba un entero de 4 dígitos, como cualquier número de pin ole. Si no es un número entero ni 4 dígitos de longitud, llamo al método create_account para que empiecen de nuevo.

Estoy ejecutando ruby ​​2.0.0 si esa información es necesaria, pero apuesto a que es probable que tenga más que ver con mi código. Stackoverflow es nuevo para mí, por lo que me disculpo si se ha formulado esta pregunta. Traté de hacer mi tarea como se aconseja antes de hacer una pregunta, pero todavía estoy perplejo. Cualquier ayuda es apreciada.


Necesitas poner la clase Integer entre paréntesis:

unless @response.is_a?(Integer) && @response.to_str.length == 4

¿En realidad estás evaluando is_a is_a? on (Integer && @response.to_str.length == 4) que es un valor booleano, no una clase o módulo.