轨道
/
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,全部免费。