我在深入探究菲尼克斯如何將模板渲染爲碘甲烷,並發現了一些對我而言看起來很奇怪的列表。似乎我缺少涉及「豎線」或「垂直管道」字符(|
)的列表的基本語法。Elixir:這是什麼樣的列表還有豎條呢?
下面是一些例子我做明白:
# prepends 1 to the list [2, 3]
l = [1 | [2, 3]] #=> [1, 2, 3]
# matches the head and tail into variables
inspect_tail = fn ([_head | tail]) -> IO.inspect(tail) end
那些我得到。但是這是什麼?
l = ["hi" | "there"] #=> ["hi" | "there"]
這似乎是對頭部和尾部的名單:
is_list(["hi" | "there"]) #=> true
hd(["hi" | "there"]) #=> "hi"
tl(["hi" | "there"]) #=> "there"
...但如果給這樣的列表中length(list)
功能給出了ArgumentError
。
這是什麼,它用於什麼?
多一點谷歌搜索讓我覺得這可能是一個「不當名單」 - 是嗎? –
仍試圖瞭解用例。正如[本文](http://www.evanmiller.org/elixir-ram-and-the-template-of-doom.html)所示,':re.replace'(與'Regex.replace'不同)返回一個不正確的列表:':re.replace(「sing」,「i」,「o」)#> [「s」,「o」,| 「NG」]'。我知道它重用了現有的字符串,但我不明白爲什麼結果不是'[「s」,「o」,「ng」]' –