我正在编写一个与GSM可能的折扣和订户关系有关的程序。如果给定的电话号码在订户数组中,则它也具有可能的折扣状态...如果为真,则它可以具有折扣,否则它不能(假)。如果电话号码碰巧不在订户数组中,则程序应该停止,仅显示最后一条给定消息:"状态:无效"
subscribers = %w[5553457867 5417890987 5524567867 5356789865 5321234567 5546754321 5389876543]
starred_customer = [true, false, true, true, false, false, true]
def telephone_no_to_customer_index(subscribers, telephone_no)
subscribers.find_index do |number|
telephone_no == number
end
end
def starred_customer?(starred_customer, customer_index)
x = starred_customer[customer_index]
if x == true
puts "DISCOUNT: POSSIBLE"
elsif x == false
puts "DISCOUNT: IMPOSSIBLE"
end
end
telephone_no = gets.chomp
state = telephone_no_to_customer_index(subscribers, telephone_no)
state ? (puts "STATUS: VALID") : (puts "STATUS: INVALID") #should i write here && (return)?
customer_index = telephone_no_to_customer_index(subscribers, telephone_no)
discount_state = starred_customer?(starred_customer, customer_index)
puts discount_state
一旦输入的电话号码不在subscriber数组中,程序将跳过所有其他操作,因为程序没有停止,它将"nil"作为参数传递给第二个方法,而第二个方法不能将折扣状态应用于nil,因此它给出了一个错误:没有从nil到整数的隐式转换(TypeError):
我想从程序中得到的只是返回"STATUS:如果telephone_no不是订户数组的元素,则停止。
1条答案
按热度按时间pbgvytdp1#
如果你想在某种情况下退出程序,你可以这样做。
您也可以使用
unless
: