在学习语言的早期阶段,并通过ElixirSips系列视频进行工作.我一直在打一些被语言变化略微痴迷的东西.试图围绕这一点,谷歌/ Github问题追踪器/ SO拖网让我无处可用.我有这个非常基本的模块,它应该运行一个shell命令:
defmodule QuickieSynth.Sound do
def command(note) do
"play -qn synth 2 pluck #{note}"
end
def play(note) do
note |> command |> System.cmd
end
end
Run Code Online (Sandbox Code Playgroud)
但是,当编译此文件并运行测试时,我得到一个参数错误; 足够公平 - System.cmd/1似乎不再是标准库的一部分.
System.cmd/3 是在标准库,并读取文档所指示的选项,以及,可选的.所以我通过空的args note |> command |> System.cmd([]),我得到的是erlang: :enoent:再次仔细阅读文档后,再次公平.
所以我尝试使用Erlang :os.cmd/1,所以note |> command |> :os.cmd,我得到了(FunctionClauseError) no function clause matching in :os.validate/1.我现在卡住了.