轨道
/
Elm
Elm
/
练习
/
Tracks on Tracks on Tracks
Tracks on Tracks on Tracks

Tracks on Tracks on Tracks

学习练习

简介

简介

数组

Elm 中的List是一种不可变的集合,包含零个或多个同一类型的值。

数组可以这样定义:

empty = []
singleValue = [ 5 ]
threeValues = [ "a", "b", "c" ]

向数组中添加元素最常见的方式,是使用::(cons)运算符:

twoToFour = [ 2, 3, 4 ]
oneToFour = 1 :: twoToFour --> [ 1, 2, 3, 4 ]

数组通过定义在 List 模块 中的函数和运算符来操作,也可以通过模式匹配来操作:

describe : List String -> String
describe list =
    case list of
        [] ->
            "Empty list"

        [ "hello" ] ->
            "Singleton list with: hello"

        x :: xs ->
            "Non-empty list with head: " ++ x

describe []                   --> "Empty list"
describe [ "hello" ]          --> "Singleton list with: hello"
describe [ "hello", "world" ] --> "Non-empty list with head: hello"

说明

在这个练习中,你将编写代码,记录你想在 Exercism 上学习的编程语言数组。 本练习共有六个任务,每个任务都涉及数组。

1. 创建一个新数组

为了记录你想学习的编程语言,你需要创建一个新数组。 定义 newList 常量,让它包含一个新的空数组。

newList
    --> []

2. 定义一个已有的数组

目前,你手上有一张纸,上面列出了你想学习的编程语言:Elm、Clojure 和 Haskell。 定义 existingList 常量来表示这个数组。

existingList
    --> [ "Elm", "Clojure", "Haskell" ]

3. 往数组里添加一门新语言

当你在 Exercism 上探索、发现更多有趣的语言时,你会想把它们加到数组里。 实现 addLanguage 函数,把一门新语言添加到数组的开头。

addLanguage "TypeScript" [ "JavaScript", "CoffeeScript" ]
    --> [ "TypeScript", "JavaScript", "CoffeeScript" ]

4. 数一数数组里有几门语言

手动数语言的数量很不方便。 实现 countLanguages 函数,统计数组中语言的数量。

countLanguages [ "C#", "Racket", "Rust", "Ruby" ]
    --> 4

5. 反转数组

某一天你会发现,数组的顺序其实是反的! 实现 reverseList 函数,把数组反转过来。

reverseList [ "Prolog", "C", "Idris", "Assembly" ]
    --> [ "Assembly", "Idris", "C", "Prolog" ]

6. 检查数组是否令人兴奋

虽然你热爱所有语言,但 Elm 在你心中有特殊的地位。 因此,只要满足以下条件,你就会对一份编程语言数组感到非常兴奋:

  • 数组的第一项是 Elm。
  • 或者数组的第二项是 Elm,且数组中至多包含三种语言。

实现 excitingList 函数,检查一个编程语言数组是否令人兴奋:

excitingList [ "Nim", "Elm" ]
    --> True
通过 GitHub 编辑 链接将在新窗口或新标签页中打开
Elm Exercism

准备好开始 Tracks on Tracks on Tracks 了吗?

注册 Exercism,借助 28 个概念110 个练习 和真人导师指导,学习并掌握 Elm,全部免费。