Noob Student Проблемы с Ruby - PullRequest
       0

Noob Student Проблемы с Ruby

1 голос
/ 10 марта 2020

У меня проблемы с работой в классе. Я студент зрелого возраста, который пытается играть в догонялки, ха-ха. Мы используем RUBY в классе

# Fix up the following code that it works and produces the expected output
# in the task specification.

# Asks the user to enter their age and returns an integer age
def get_age()
  puts "Enter your age in years: "
  age = gets.to_i
  return age
end

# takes a prompt and displays it to the user then returns the
# entered string
def get_string()
  puts "Enter your name: "
  name = gets
  return name
end

# Calculate the year born based on the parameter age and print that out
# along with the name of the user
def print_year_born(age)
  year_born = Date.today.year -  get_age
  puts "You were born in: " + year_born
  return year_born
end

def main
  age = get_age()
  name = get_string()
  print_year_born
(age)
end

main

У меня возникли проблемы в линии процедура get_age, как я могу вызвать get_age в этой процедуре?

Заранее спасибо - студент

Ответы [ 2 ]

1 голос
/ 10 марта 2020

Как вы заметили, вы получили возраст в get_age

Так что вместо

year_born = Date.today.year - get_age

, который запрашивает его снова, вам нужно сделать

year_born = Date.today.year - age

age - аргумент, который вы передали в метод print_year_born

Плюс, это может быть опечатка, но вы хотите

print_year_born(age) 

как одну строку

0 голосов
/ 10 марта 2020

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

def get_age()
  puts "Enter your age in years: "
  age = gets.to_i
  return age
end

require 'date'

def print_year_born
  year_born = Date.today.year -  get_age
  puts "You were born in:  #{year_born}"
  # or even more simply
  puts "You were born in:  #{Date.today.year - get_age}"
end

print_year_born

Enter your age in years: 
 12
You were born in:  2008
Enter your age in years: 
 12
You were born in:  2008
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...