Язык программирования Crystal

HTTP сервер

Немного более интересным примером является HTTP сервер:

require "http/server"

server = HTTP::Server.new(8080) do |context|
  context.response.content_type = "text/plain"
  context.response.print "Hello world! The time is #{Time.now}"
end

puts "Listening on http://0.0.0.0:8080"
server.listen

Приведенный код выше будет иметь смысл только если вы прочитаете всю документацию, но вы уже можете кое-чему научиться.

  • Вы можете подключить код из других файлов:

      require "http/server"
    
  • Вы можете определить локальную переменную без необходимости указывать ее тип:

      server = HTTP::Server.new ...
    
  • Ваша программа вызывает методы (или посылает сообщения) объектам.

      HTTP::Server.new(8000) ...
      ...
      Time.now
      ...
      puts "Listening on http://0.0.0.0:8080"
      ...
      server.listen
    
  • Вы можете использовать блоки кода, или просто блоки, которые представляют собой очень удобный способ повторного использования кода и дают возможность получить некоторые особенности из мира функционального программирования:

      HTTP::Server.new(8080) do |context|
        ...
      end
    
  • Вы легко можете создавать строки со "встроенным" контентом, который также называется интерполяция строк. Язык также предоставляет другой синтаксис для создания arrays(массивов), hashes(хэшей), ranges(диапазонов), tuples(тьюплов/кортежей) и прочего:

      "Hello world! The time is #{Time.now}"