我在定義例如函數默認參數或在列表定義中使用頭尾時遇到Elixir中的奇怪行爲。酏劑中的奇怪行爲與空白字符
這不工作,導致一個錯誤unexpected token: " "
:
def a(b \\ "test") do
b
end
但是這一個作用:
def a(b \\"test") do
b
end
的區別是默認的字符串參數"test"
" "
此外,這不起作用,並導致錯誤unexpected token: " "
:
[0 | [1,2,3,4,5]]
但是這一次確實工作:
[0 |[1,2,3,4,5]]
再次差別是在IEX尾列表定義[1,2,3,4,5]
問題的存在和編譯代碼前面的空格字符" "
。我正在運行Elixir 1.4。我的系統是macOS Sierra,我使用iTerm作爲我的終端應用程序。
所以問題是:這是正確的行爲,還是在我的環境中出現了錯誤,例如在我的環境中,它可能是什麼?所有示例和指南都允許在這些位置留出空白,但出於某種原因,我的環境不允許。我能做些什麼嗎?
預先感謝您!
如果你複製從這個問題'iex'粘貼代碼段?你仍然得到同樣的錯誤? (所有4個片段對我來說工作正常。) – Dogbert
@Dogbert好吧,我會被詛咒的。事實上,當複製這些示例時,它似乎工作正常。同樣在tmux中,這些似乎在直接寫入iex時工作正常。但是,當我將這些文件寫入到沒有tmux的裸機終端時,我得到一個錯誤:「意外的令牌:」(第5列,代碼點U + 00A0)' 看起來沒有tmux的空白在某種程度上是無效的。 – veturi
U + 00A0是一個非破壞性的空格字符:https://en.wikipedia.org/wiki/Non-breaking_space不知道爲什麼你在輸入空格時得到這個。 – Dogbert