トラック
/
Gleam
Gleam
/
演習
/
ラザニア
ラザニア

ラザニア

学習演習

はじめに

基本

関数

Gleamでは、関数はpub fnという構文で定義します。

pub fn add(x: Int, y: Int) -> Int {
  x + y
}

この関数はInt型の引数を2つ取り、Int型の値を返します。Gleamにはreturnというキーワードはありません。関数の最後の式の値が、常に_暗黙的に戻り値になります_。

引数の型注釈と戻り値の型は省略できます。また、Gleamは常にコード全体の型チェックを行います。通常、Gleamプログラマーは明確にするために型注釈を付けますが、必要なければ省略してもかまいません。

pub fn add(x, y) {
  x + y
}

関数はfunction_name(argument1, argument2)という構文で呼び出せます。

pub fn double(x: Int) -> Int {
  // Call the add function defined above
  add(x, x)
}

変数

Gleamでは、変数はlet name = expressionという構文で定義します。

pub fn main() {
  let count = 1
}

変数は型注釈を付けて宣言することもできます。関数の引数と同様、これは省略可能ですが、ほとんどのGleamプログラマーは簡潔さのために変数の型注釈を省略します。

pub fn main() {
  let count: Int = 1
}

文字列リテラル

Gleamでは、文字列はダブルクォーテーションで囲んで書きます。

pub fn greeting() {
  "Hello, world!"
}

コードのコメント

コメントを使うと、ソースコードを読む他のエンジニアに向けてメモを残せます。Gleamのコメントは、//で始まる1行のコメントです。

pub fn main() {
  // This is a comment
  let x = 1
}

説明

この演習では、お気に入りの料理本に載っている絶品ラザニアを作るために、コードをいくつか書いていきます。

ラザニア作りにかかる時間に関する、5つのタスクがあります。

1. オーブンに入れておく時間を分単位で定義する

引数を取らず、ラザニアをオーブンに入れておくべき時間を分で返すexpected_minutes_in_oven関数を定義します。料理本によると、オーブンに入れておく時間は40分です。

expected_minutes_in_oven()
// -> 40

2. オーブンに残り何分入れておくかを計算する

ラザニアを実際にオーブンに入れておいた時間を引数に取り、前のタスクで求めたオーブンに入れておく時間をもとに、あと何分オーブンに入れておく必要があるかを返すremaining_minutes_in_oven関数を定義します。

remaining_minutes_in_oven(30)
// -> 10

3. 下準備にかかる時間を分単位で計算する

ラザニアに重ねた層の数を引数に取り、1層につき2分かかるものとして、下準備にかかった時間を分で返すpreparation_time_in_minutes関数を定義します。

preparation_time_in_minutes(2)
// -> 4

4. 作業時間の合計を分単位で計算する

total_time_in_minutes関数を定義します。この関数は2つの引数を取ります。1つ目の引数はラザニアに重ねた層の数、2つ目の引数はラザニアをオーブンに入れておいた時間(分)です。関数は、ラザニア作りに合計で何分かかったかを返すようにします。これは、下準備にかかった時間と、その時点でラザニアをオーブンに入れておいた時間を足したものです。

total_time_in_minutes(3, 10)
// -> 16

5. ラザニアができたことを知らせる通知を作る

引数を取らず、ラザニアが食べごろになったことを知らせるメッセージを返すalarm関数を定義します。

alarm()
// -> "Ding!"
GitHubで編集する リンクは新しいウィンドウまたはタブで開きます
Gleam Exercism

ラザニアを始める準備はできましたか?

Exercismに登録すれば、33個のコンセプト122個の演習、そして本物の人間によるメンタリングとともに、Gleamを学んでマスターできます。すべて無料です。