Al

Alapok ebben a kurzusban: Crystal

1 feladat

A(z) Alapok fogalomról

A Crystal egy fordított, objektumorientált programozási nyelv. Íme a nyelv néhány célkitűzése:

  • Ruby ihlette szintaxis.

  • Statikusan típusellenőrzött, de nem kell megadni a változók vagy metódusargumentumok típusát.

  • C kódot lehessen hívni úgy, hogy kötéseket írunk hozzá Crystalben.

  • Legyen fordítási idejű kiértékelés és kódgenerálás, hogy elkerüljük a sablonkódot.

  • Forduljon hatékony natív kódra.

A Crystalen 2011-ben kezdtek el dolgozni azzal a céllal, hogy egy olyan nyelvet hozzanak létre, amely a Ruby eleganciáját és termelékenységét nyújtja, ugyanakkor egy fordított nyelv teljesítményével és típusbiztonságával rendelkezik. A nyelv fordítója eredetileg Rubyban íródott, de 2013-ban újraírták Crystalben. A nyelvet Ary Borenszweig, Juan Wajnerman és Brian Cardiff fejlesztette és tervezte.

Első lépések

Változók

Egy változó létrehozásához használd az = értékadó operátort. A Crystalben a változók neve snake_case formátumú legyen.

number = 1
puts number # => 1

number = 2
puts number # => 2

Konstansok

A konstansok ugyanezzel az = értékadó operátorral hozhatók létre, de a nevük csupa nagybetűből áll, amit SCREAMING_SNAKE_CASE-nek nevezünk.

NUMBER = 1
puts NUMBER # => 1

Ha egy már definiált konstansnak adunk értéket, az fordítási idejű hibát okoz.

NUMBER = 1

NUMBER = 2
# Error: already initialized constant NUMBER

Típusok

A Crystal egy fordított nyelv, ami azt jelenti, hogy minden változó és metódusargumentum fordítási időben kap típust. A fordító képes kikövetkeztetni egy változó vagy metódusargumentum típusát. Bizonyos esetekben azonban meg kell adni a típust. Azokat az eseteket, amelyekben meg kell adni a típust, a későbbi fogalmakban magyarázzuk el.

Metódusok

A metódusok segítségével újra felhasználható utasításokat csoportosíthatunk. A Crystalben a metódusokat gyakran egy osztályban, modulban vagy struktúrában definiáljuk. A metódusokat azonban osztályon, modulon vagy struktúrán kívül is definiálhatjuk. A metódusokat a def kulcsszóval deklaráljuk, amelyet a metódus neve követ. A Crystalben a metódusok nevét snake_case formátumban írjuk. Ha egy metódusnak nincsenek argumentumai, a zárójeleket elhagyhatod. A metódus végét az end kulcsszóval jelölöd.

def hello
  puts "Hello World!"
end

Ha egy metódust olyan típusú változóval vagy metódusargumentummal használunk, amelyre nem létezik, az fordítási idejű hibát okoz.

number = 1
number + "1"
# Error: no overload matches 'Int32#+' with type String

Argumentumok

A metódusoknak lehetnek argumentumai. Az argumentumok olyan adatok, amelyeket átadunk egy metódusnak. Ahhoz, hogy argumentumokat adhass egy metódusnak, meg kell adnod az argumentum nevét. A Crystalben az argumentumok nevét snake_case formátumban írjuk. Egy metódusnak több argumentuma is lehet, de az argumentumokat vesszővel kell elválasztani.

def hello(name)
  puts "Hello #{name}!"
end

A metódusoknak több argumentumuk is lehet. Ebben az esetben az argumentumokat vesszővel kell elválasztani.

def hello(name, language)
  puts "Hello #{name}! You are learning #{language}."
end

Metódusok hívása

Amikor egy osztályhoz, modulhoz vagy struktúrához tartozó metódust hívunk meg, a pont operátort(.) kell használni. A formátum ez legyen: <ClassName>.<method_name>. Ha egy metódus nem tartozik osztályhoz, modulhoz vagy struktúrához, egyszerűen a nevének leírásával meghívhatod. A metódusok mindig implicit módon visszaadják az utolsó kifejezés értékét.

Ha egy metódusnak vannak argumentumai, zárójeleket használhatsz az argumentumok megadásakor a metódushívásban és a definícióban is, például így: <method_name>(<argument_1>, <argument_2>, ...). Ha egy metódusnak nincsenek argumentumai, a zárójeleket el kell hagyni.

def hello(name)
  "Hello #{name}!"
end

hello("Crystal")
# => Hello Crystal!

Amikor egy metódust több argumentummal hívunk meg, az argumentumokat vesszővel kell elválasztani. Az argumentumokat ugyanolyan sorrendben kell megadni, mint amilyen sorrendben a metódus definíciójában szerepelnek.

def hello_language(name, language)
  "Hello #{name}! You are learning #{language}."
end

hello_language("World", "Crystal")
# => Hello World! You are learning Crystal.

Ha egy metódust rossz számú argumentummal hívunk meg, az fordítási idejű hibát okoz.

hello_language("Crystal")
# wrong number of arguments for 'hello_language' (given 1, expected 2)

Összeadás, kivonás és szorzás

A Crystalben a + operátorral két számot adhatsz össze. A - operátorral két számot vonhatsz ki. A * operátorral pedig két számot szorozhatsz meg.

1 + 1
# => 2

2 - 1
# => 1

2 * 2
# => 4

Megjegyzések

A Crystalben a megjegyzéseket a # karakterrel írjuk, amelyet egy szóköz, majd maga a megjegyzés követ. A megjegyzéseket a kód dokumentálására használjuk. A fordító nem hajtja végre a megjegyzéseket.

# This is a comment
Szerkesztés GitHubon A hivatkozás új ablakban vagy lapon nyílik meg

Tanuld meg a(z) Alapok fogalmat