我有这个功能
def start(data, opts \\ [pages: 17, depth: 3]) do
maxPages = opts[:pages]
maxDepth = opts[:depth]
IO.puts maxPages
IO.puts maxDepth
end
Run Code Online (Sandbox Code Playgroud)
当我这样做时,Program.start("data", pages: 8)我希望它打印8,3但它只打印8
Paw*_*zak 15
你可以Keyword#get/3改为,比如:
def start(data, opts \\ []) do
maxPages = Keyword.get(opts, :pages, 17)
maxDepth = Keyword.get(opts, :depth, 3)
IO.puts maxPages
IO.puts maxDepth
end
Run Code Online (Sandbox Code Playgroud)
或可替换地,Keyword#merge/2通过在 opts一些默认值:
def start(data, opts \\ []) do
finalOpts = Keyword.merge([pages: 17, depth: 3], opts)
maxPages = finalOpts[:pages]
maxDepth = finalOpts[:depth]
IO.puts maxPages
IO.puts maxDepth
end
Run Code Online (Sandbox Code Playgroud)
希望能帮助到你!