Why is Nil required at the end of a list built using the cons operator

前端 未结 3 791
一个人的身影
一个人的身影 2020-12-06 20:50

I\'m learning Scala at the moment (Programming Scala, 2nd Edition, Odersky).

When building a list using the cons operator we have to write:

val l = 1         


        
3条回答
  •  囚心锁ツ
    2020-12-06 21:33

    In concept, a List in Scala is either

    • a Nil (means an empty list) or
    • a head element and tail, which is a List again.

    :: is to create a new list with a head element and a tail list. And it is right associative.

    So

    1 :: 2 :: 3 :: 4 :: Nil 
    

    will be compiled as

    1 :: (2 :: (3 :: (4 :: Nil)))
    

    Starting from the right, the first list is constructed with 4 and Nil, making a new list [4]. Then adding 3 as the head of the tail list [4], making a new list [3, 4]. And so on...

    To answer your question, Scala needs an empty list to construct the 1st list. Cause that's how the list is defined in Scala.

提交回复
热议问题