-3
-2
-1

Michel Martens

soveran

Crystal Programming Language

  puts "hello world"
class User
  def initialize(name)
    @name = name
  end
end
class User
  def initialize(name : String)
    @name = name
  end
end
class User
  def initialize(@name : String)
  
  end
end
class User
  def initialize(@name : String)
  end
end

class User
  
  
  def initialize(@name : String)
  end
end

class User
  @name : String  
  
  def initialize(@name)
  end
end

class User
  ...
  
  def name
    @name
  end
end
class User
  ...
  
  attr_reader :name
end


class User
  ...
  
  getter :name
end


class User
  ...
  
  getter name
end


attr_readergetter
attr_writersetter
attr_accessorproperty
class User
  attr_accessor :name
  
  def initialize(name)
    @name = name
  end
end
class User
  property name
  
  def initialize(@name : String)
  end
end

class User
  property name
  
  def initialize(@name : String)
  end
end

class User
  property name : String
  
  def initialize(@name)
  end
end

class User
  property name : String
  
  def initialize(@name)
  end
end

Overloading

def greet(user)
  puts "hello #{user.name}"
end


def greet(user)
  puts "hello #{user.name}"
end

greet User.new("foo")
def greet(user)
  puts "hello #{user.name}"
end

greet nil
def greet(user)
  puts "hello #{user.name}"
end

greet nil ERROR
def greet(user)
  if user.nil?
    puts "hello guest"
  else
    puts "hello #{user.name}"
  end
end


def greet(user)
  if user.nil?
    puts "hello guest"
  else
    puts "hello #{user.name}"
  end
end

greet nil
def greet(user)
  if user.nil?
    puts "hello guest"
  else
    puts "hello #{user.name}"
  end
end

greet User.new("foo")
def greet(user)
  if user.nil?
    puts "hello guest"
  else
    puts "hello #{user.name}"
  end
end

greet "bar"
def greet(user)
  if user.nil?
    puts "hello guest"
  else
    puts "hello #{user.name}"
  end
end

greet "bar" ERROR
def greet(user : User)
  puts "hello #{user.name}"
end
def greet(user : User)
  puts "hello #{user.name}"
end

def greet(user : Nil)
  puts "hello guest"
end
def greet(user : User)
  puts "hello #{user.name}"
end

def greet(user : Nil)
  puts "hello guest"
end

def greet(name : String)
  puts "hello #{name}"
end
def greet(user : User)
  puts "hello #{user.name}"
end

def greet(user : Nil)
  puts "hello guest"
end

def greet(name : String)
  puts "hello #{name}"
end
def greet(user : User)
  puts "hello #{user.name}"
end

def greet(user : Nil)
  puts "hello guest"
end

def greet(name : String)
  puts "hello #{name}"
end
def greet(user : User)
  greet(user.name)
end

def greet(user : Nil)
  puts "hello guest"
end

def greet(name : String)
  puts "hello #{name}"
end
def greet(user : User)
  greet(user.name)
end

def greet(user : Nil)
  puts "hello guest"
end

def greet(name : String)
  puts "hello #{name}"
end
def greet(user : User)
  greet(user.name)
end

def greet(user : Nil)
  greet("guest")
end

def greet(name : String)
  puts "hello #{name}"
end
def greet(user : User)
  greet(user.name)
end

def greet(user : Nil)
  greet("guest")
end

def greet(name : String)
  puts "hello #{name}"
end

Macros

macro attr_reader(name)
  def {​{name.id}}
    @{​{name.id}}
  end
end
attr_reader email


attr_reader emaildef email
                      @email
                    end
{% for str in %w(foo bar baz) %}
  puts {​{str.upcase}}
{% end %}
  puts "FOO"
  puts "BAR"
  puts "BAZ"
SHA = {​{ system(...).stringify }}
SHA = "2d3dae8"

Concurrency

URLS = ["http://foo.com", ...]
URLS.each do |url|
  puts HTTP::Client.get(url).body
end
URLS.each do |url|
  puts HTTP::Client.get(url).body
end
URLS.each do |url|
  puts fetch(url)
end
URLS.each do |url|
  puts fetch(url)
end
ch = Channel(String).new
URLS.each do |url|
  spawn do
    ch.send(fetch(url))
  end
end
URLS.size.times do |url|
  puts ch.receive
end
soveran/resp-crystal
soveran/nest-crystal
soveran/stal-crystal
soveran/ohm-crystal
soveran/resp-crystal
soveran/nest-crystal
soveran/stal-crystal
soveran/ohm-crystal

crystal-lang.org

Thanks!