2016-05-12 23 views
2

我期待在enum文檔,這裏是我的代碼:藥劑返回笑臉上Enum.reverse方法

defmodule Math do 
    def reverse(list), do: Enum.reverse(list) 
end 

我運行它:

IO.write(Math.reverse([1,2,3,4,5,6,7,8]))

但是,有些不可思議事情正在發生。我收到一個「嗶嗶」聲,伴隨着 these funny characters ..

我對Elixir相當陌生,但我不確定從何處開始調試過程。我哪裏錯了?謝謝!

+0

不是爲了你的利益@MakeWebSocketsGreatAgain但對於其他人的利益誰可能會發現這樣一個問題:https://github.com/elixir-lang/elixir/wiki/FAQ(項目4)。 –

回答

4

此問題與Enum.reverse/1函數沒有直接關係。你可以通過傳遞整數的列表IO.write/1重現同樣的事情:

iex(5)> IO.write([8,7,6,5,4,3,2,1]) 
^H^G^F^E^D^C^B^A:ok 

這裏發生的事情是,IO.write/1正在接收整數的列表,並把它作爲「字符列表」。使用單引號時可以創建char列表,​​如'foo'。使用給了我們很多的細節:

iex(22)> i('foo') 
Term 
    'foo' 
Data type 
    List 
Description 
    This is a list of integers that is printed as a sequence of characters 
    delimited by single quotes because all the integers in it represent valid 
    ASCII characters. Conventionally, such lists of integers are referred to as 
    "char lists" (more precisely, a char list is a list of Unicode codepoints, 
    and ASCII is a subset of Unicode). 
Raw representation 
    [102, 111, 111] 
Reference modules 
    List 

我想,這些字符是由這將導致聲音效果和「笑臉」窗口古怪的解釋。

編輯:入門文檔也是非常有用的:http://elixir-lang.org/getting-started/binaries-strings-and-char-lists.html#utf-8-and-unicode

+1

嗯我現在看到了,謝謝你的深入解釋! – MakeWebSocketsGreatAgain