在定义示例函数默认参数或在列表定义中使用head | tail时,我在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]]
差异是尾部列表定义" "
之前的空格字符[1,2,3,4,5]
IEX和编译代码中存在问题。我正在运行Elixir 1.4。我的系统是macOS Sierra,我使用iTerm作为我的终端应用程序。
所以问题是:这是正确的行为还是在我的环境中出现了什么问题?它可能是什么?所有示例和指南都允许在这些位置使用空格,但出于某种原因,我的环境却没有。我能做点什么吗?
提前谢谢!
答案 0 :(得分:3)
问题得到解决,如评论中所述。
在macOS上alt+space
提供非空格字符而不是普通空格。在空格后插入任何带有alt-combination的字符后,大多数情况下都会出现所描述的问题,因为我的速度不足以释放alt-key,因此提供了错误的空格。
有关在macOS上解决此问题的说明(如果您要禁用备用空间,请查看此问题):https://superuser.com/questions/78245/how-to-disable-the-option-space-key-combination-for-non-breaking-spaces