2016-10-10 3 views
-3

У меня есть программа в Ruby, которая берет номер телефона и может извлекать информацию с этого номера. Он может указать мне код области, корень и префикс числа.Как создать программу, которая позволяет пользователю указывать тип ввода?

Теперь я хочу добавить еще один параметр, в котором пользователь может ввести, что именно этот номер телефона их мобильный, рабочий номер и т.д.

Например:

MyContact1 = Info.new ('(555) 555-5555', :home) 
=>(555) 555-5555 (home) 

MyContact1.label 
=>"home" 

MyContact2. = Info.new (' 555-555-5555, "work") 
=>(555) 555-5555 (work) 

Вот мой код:

class PhoneNumber 

    def initialize (ph) 
    @ph = ph 
    @ph.insert(0, '(') 
    @ph.insert(4, ')') 
    @ph.insert(5, ' ') 
    @ph.insert(9, "-") 
    end 
    def to_s 
    @ph 
    end 
    def area_code 
    @ph.slice(0..5) 
    end 
    def prefix 
    @ph.slice(6..8) 
    end 
    def root 
    @ph.slice(10..13) 
    end 
end 
print "Please enter a phone number: " 
puts a = PhoneNumber.new(gets.strip) 
puts a.area_code 
puts a.prefix 
puts a.root 
+1

Есть вопрос здесь? –

+0

Вам нужно попробовать, а затем, когда это не поможет, задайте конкретный вопрос. В вашем коде нет никаких доказательств того, что вы пытаетесь добавить поле, поэтому похоже, что вы хотите, чтобы мы записали его для вас. Пожалуйста, прочитайте «[ask]» и связанные страницы вместе с «[mcve]» и «[Сколько усилий ожидается от пользователей Stack Overflow?] (Http://meta.stackoverflow.com/q/261592)" , –

+1

В производственном коде или коде, предназначенном для приема международных номеров, я бы рекомендовал не слепо вставлять информацию в номер телефона. Вы предполагаете, что пользователь еще не поместил их, и, если число не основано на U.S, ваше форматирование будет неправильным. Вместо этого вы должны использовать все, что используется для форматирования, сохранить значение, а затем, если вам нужно представить его пользователю, переформатируйте его соответствующим образом для своего региона или страны. –

ответ

0

Просто расширить метод инициализации, чтобы принять больше аргументов:

class PhoneNumber 

    attr_reader :label 

    def initialize(ph, label) 
    @ph = ph 
    @label = label 
    # ... 
    end 
    # ... 
end 

Теперь вы можете пройти ряд и метку, и у вас есть метод, определенный для получения этой метки:

a = PhoneNumber.new('555-555-5555', :home) 
#=> #<PhoneNumber:0x007fd7cb149fb0 @label=:home, @ph="(555) -55-5-5555"> 
[8] pry(main)> a.label 
#=> :home 
Смежные вопросы