Ввод с использованием аргументов командной строки - PullRequest
0 голосов
/ 19 июня 2019

Определите класс Account с тремя тремя атрибутами: «name», «account_no» и «balance».Имя и Баланс должны быть установлены при создании объекта класса Account, account_number должен быть автоинкрементным.Этот класс Account должен иметь два метода, deposit () иdraw ().

Ваша программа должна принимать три аргумента: 1. клиент один 2. клиент два 3. сумма транзакции

формат ввода: customer_name1: account_balance1 customer_name2: account_balance2 перевод: транзакция_amount

Я пытаюсь получить ввод с использованием ARGV, но не уверен, как получить ввод в формате - ABC: 2000 XYZ: 3000 перевод: 200

Любойпредложения?

1 Ответ

0 голосов
/ 19 июня 2019

Я не уверен, что для такого рода теста целесообразно использовать программные аргументы (я бы использовал файл со всеми возможными переводами).

Если вы все еще хотите использовать ARGV при вызовеВаша рубиновая программа выглядит так: ruby prog_name.rb ABC:2000 XYZ:3000 transfer:200 ARGV будет выглядеть следующим образом: ["ABC:2000", "XYZ:3000", "transfer:200"]
Итак

  • ARGV [0] равно "customer_name1: account_balance1" (используйте split (':') &to_i для получения правильных значений)
  • ARGV [1] - это «customer_name2: account_balance2»
  • ARGV [2] - это «Transfer :action_amount»

Мое предложение по использованию файла связано с функцией gets.По сути, вы создадите файл, содержащий следующее:

create_account ABC
create_account XYZ
deposit 2000 ABC
deposit 3000 XYZ
transfer 200 ABC XYZ

С этими данными вы знаете, что делаете и какую функцию будете вызывать, программа, использующая класс Account, будет иметь такую ​​структуру:

require "account" # I'm supposing your $LOAD_PATH is correctly set

while (line = gets)
  command, *params = line.split(' ')
  case command
  when 'create_account'
    # Create an account with name = params.first
  when 'deposit'
    # Deposit params.first.to_i in account with name params[1]
  when 'transfer'
    # Make sure account with name params[1] has params.first.to_i in its balance
    # Withdraw params.first.to_i from account with name params[1]
    # Deposit params.first.to_i in account with name params[2]
  else
    puts "Unknown command #{command} in line #{line}"
  end
end

Таким образом, вам нужно будет только позвонить ruby program_name.rb dataset.txt, и он обработает всю строку dataset.txt.Вы можете создавать различные наборы данных, чтобы убедиться, что ваш аккаунт-менеджер делает правильные вещи.(Так что вам нужно будет сделать методы Transfert и найти метод account в классе AccountManager).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...