Академия Makers — PreCourse

Я начал писать этот пост, сидя на скамейке с видом на гавань Плимута, день очень пасмурный, но теплый, и я только что пообедал в прибрежном кафе с моим дедушкой, которого обычно называют дедушкой. У меня как раз подходит к концу третья неделя PreCourse Makers Academy, и я воспользовался возможностью, чтобы поработать, навещая своих родственников.

Я закончил работу три недели назад, чтобы полностью посвятить себя PreCourse. Я рад, что сделал это, потому что до сих пор это было всеохватывающим! Мы рассмотрели основы, необходимые для Makers Academy, в том числе:

  • Командная строка
  • Гит и Гитхаб
  • Рубин

С самого начала PreCourse я познакомился со Slack как с платформой для поддержания связи со всеми участниками моей группы, а также с другими выпускниками Makers Academy. Люди из моей группы встречались несколько раз, и мы помогали друг другу с областями, в которых мы застряли, а также объединялись в ката CodeWars. Было очень весело! Однако я очень рад, что нашел время, чтобы ознакомиться с командной строкой и GitHub до начала курса, потому что они были неотъемлемой частью нашего обучения. Стало ясно, что это жизненно важные инструменты, которыми нам нужно будет овладеть во время прохождения курса.

На этой неделе нам было поручено создать приложение каталога учащихся, к которому мы можем получить доступ через командную строку. Я нашел это чрезвычайно приятным, основные моменты:

  • Использование операторов case для выполнения определенных действий when выполняются условия для определенной переменной.
  • Чтение и запись из и в файлы CSV.

Запись в файл CSV

Ниже приведен пример написанного мной кода, который будет обращаться к CSV-файлу и сохранять в нем содержимое массива @students (хэшей). Сначала он попросит пользователя указать имя файла для сохранения. Затем он сообщит вам, сколько студентов было помещено в файл CSV.

def save_students
  puts "Which file would you like to save to?"
  to_save = gets.chomp
  CSV.open(to_save, "w") do |file| #open the file for writing
    @students.each do |student| #iterate over the students array
      student_data = [student[:name], student[:cohort]]
      file.puts student_data.join(",")
    end
    puts "#{@students.length} students written to students.csv".center(80)
  end
end

Обратите внимание, как CSV.open передается блок, в котором мы перебираем @students, преобразуем содержимое хэша в массив student_data, который затем объединяется с помощью join(",") и «помещается» в файл построчно с помощью file.puts. Следует отметить, что блок, переданный CSV.open, автоматически открывает и закрывает файл после завершения.

Утверждения дела

Мне очень нравятся операторы case. Они упрощают то, что вы, вероятно, уже делаете. Ниже приведен пример, который запрашивает у вас (Тимми) оценку, которую он получил в школе, и возвращает ответ матери Тимми в зависимости от того, что он говорит:

def timmys_grade
  puts "What grade did you get at school Timmy?"
  answer = gets.chomp
  case answer
  when "A"
    puts "Well done!!! You're my favourite child!"
  when "B"
    puts "That's some good work Timmy!"
  when "C"
    puts "Timmy! I think you can do better than that!"
  else
    puts "Timmy, you're the worst."
  end
end

timmys_grade

Ключевая строка, на которую следует обратить внимание, это case answer, потому что она автоматически выбирает переменную answer, которая была задана в качестве аргумента вместо case. В следующих when предложениях первое из них, которое оценивается как истинное, «выигрывает» и выполняется. Он предлагает гораздо более лаконичный метод выполнения кода, чем if elsif и else. Хотя, конечно, будут ситуации, когда это более осуществимо как вариант.

Что ж, это просто краткое изложение некоторых технологий, которые показались мне интересными на прошлой неделе. Мне очень нравится застревать, но сейчас я собираюсь попробовать еще одну ката на CodeWars.

До скорой встречи!

Льюис

Первоначально опубликовано на сайте lewis-youl.ghost.io 14 октября 2017 г.