Um exemplo ligeiramente mais interessando é o de um servidor 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
O código acima fará sendio depois que você ler a documentação completa, mas já podemos aprender algumas coisas.
Você pode incluir código definido em outros arquivos:
require "http/server"
Você pode definir variáveis locais sem a necessidade de especificar o seu tipo:
server = HTTP::Server.new ...
Você programa invocando métodos (ou enviando mensagens) em objetos.
HTTP::Server.new(8000) ...
...
Time.now
...
puts "Listening on http://0.0.0.0:8080"
...
server.listen
Você pode usar blocos de código, ou simplesmente blocos, que são um modo muito conveniente de reaproveitar código e usar algumas características do mundo funcional:
HTTP::Server.new(8080) do |context|
...
end
Você pode criar strings facilmente com conteúdo embutido, também chamado de interpolação de strings. A linguagem também vem com outras sintaxes para criar arrays, hashes, ranges, tuplas e mais:
"Hello world! The time is #{Time.now}"