學習軌道
/
Gleam
Gleam
/
練習
/
高中情人
高中情人

高中情人

學習練習

簡介

管線運算子

|>運算子稱為管線運算子。它可以把多個函式呼叫串接在一起,讓前一個函式呼叫回傳的值傳給下一個函式呼叫。

"hello"
|> string.uppercase
|> string.append("?!")
// -> "HELLO?!"

上面這段程式碼等同於下面這一段:

string.append(string.uppercase("hello"), "?!")

管線運算子會把值當作函式呼叫的第一個引數傳入,或是把它當作新呼叫的唯一引數傳入,並自動選擇型別正確的那一種。

100
|> function_that_takes_two_arguments(1)

// Is equivalent to
function_that_takes_two_arguments(100, 1)
100
|> function_that_returns_a_function(1)

// Is equivalent to
function_that_returns_a_function(1)(100)

有時候我們想把值傳到其他位置,這時候可以用_佔位符來指出值應該插入的地方。

100
|> some_function(1, _, 2)

說明

在這個練習中,你會幫助高中情侶在社群媒體上公開示愛,用他們的縮寫產生一個 ASCII 愛心:

     ******       ******
   **      **   **      **
 **         ** **         **
**            *            **
**                         **
**     J. K.  +  M. B.     **
 **                       **
   **                   **
     **               **
       **           **
         **       **
           **   **
             ***
              *

1. 取得名字的第一個字母

實作first_letter函式。它應該接收一個名字並回傳它的第一個字母。它應該清除名字中任何多餘的空白。

first_letter("Jane")
// -> "J"

2. 將第一個字母格式化為縮寫

實作initial函式。它應該接收一個名字,回傳大寫的第一個字母,後面接著一個點。記得重複使用你在前一步定義的first_letter。

initial("Robert")
// -> "R."

3. 將全名拆分成名字與姓氏

實作initials函式。它應該接收一個全名,全名由以空格分隔的名字和姓氏組成,並回傳縮寫。記得重複使用你在前一步定義的initial。

initials("Lance Green")
// -> "L. G."

4. 將縮寫放進愛心裡

實作pair函式。它應該接收兩個全名,並回傳放在 ASCII 愛心內的縮寫。記得重複使用你在前一步定義的initials。

pair("Blake Miller", "Riley Lewis")
// -> "
//      ******       ******
//    **      **   **      **
//  **         ** **         **
// **            *            **
// **                         **
// **     B. M.  +  R. L.     **
//  **                       **
//    **                   **
//      **               **
//        **           **
//          **       **
//            **   **
//              ***
//               *
// "
透過 GitHub 編輯 連結會在新視窗或分頁中開啟
Gleam Exercism

準備好開始 高中情人 了嗎?

註冊 Exercism,透過 33 個概念122 個練習 和真人引導來學習並精通 Gleam,全部免費。