例如:
arg = "echo:hello"
prefix = "echo"
case arg do
<<^prefix, ":", msg::binary>> -> IO.puts("Echo message: #{msg}")
_ -> IO.puts("No match")
end
Run Code Online (Sandbox Code Playgroud)
结果: No match
如果我想使用prefix模式匹配的值,该怎么办?
defmodule DemoMacro do
defmacro i_am_macro do
quote do
# ……
end
end
i_am_macro # (CompileError) example.exs:10: undefined function i_am_macro/0
end
Run Code Online (Sandbox Code Playgroud)
但是从其他模块导入,可以成功调用:
defmodule SecondModule do
require DemoMacro
DemoMacro.i_am_macro
end
Run Code Online (Sandbox Code Playgroud)
我该怎么做才能编译第一段代码?
例如,div/2是Kernel模块中的现有功能.我想调用自己的div/2函数而不是Kernel.div/2函数.
任何流程修改cwd都是全局的:
iex(1)> File.cwd
{:ok, "/home/hentioe"}
iex(2)> spawn fn -> File.cd("/home") end
#PID<0.105.0>
iex(3)> File.cwd
{:ok, "/home"}
Run Code Online (Sandbox Code Playgroud)
有没有办法隔离cwd进程之间的当前工作目录()?
我正在实现一个多进程库,该库为共享内存提供数据结构。但是我现在遇到麻烦,我在子进程中修改了共享的Hash对象,但父进程仍未读取更改后的值。
示例代码:https : //play.crystal-lang.org/#/r/6n34
用相同的指针修改,为什么无效?