如何在一行中重写这个函数?



我有以下代码行:

f((k,v)) = Symbol(k) => Symbol(v)
Dict(Iterators.map(f, pairs(names)))

我想把它写成一行。我试过了:

Dict(Iterators.map((k,v) -> Symbol(k) => Symbol(v), pairs(names)))

但是它抛出方法错误:

MethodError: no method matching (::var"#13#14")(::Pair{Symbol, String})

可以用一行写吗?

Dict(Symbol(k)=>Symbol(v) for (k, v) in pairs(names))

?

你想要这个:

Dict(Iterators.map(((k,v),) -> Symbol(k) => Symbol(v), pairs(names)))

(注意(k,v)后面的逗号强制将匿名函数的第一个参数分解为两个元素)

最新更新