【发布时间】:2016-12-19 19:27:01
【问题描述】:
我正在编写一个凸求解器,为了具体起见,假设它正在求解普通的最小二乘:找到最小化 ||b-Ax||^2 的 x。所以我的函数调用看起来像
x = optim(A, b)
我希望能够在有用时使用热启动,以提供对解决方案的良好初步猜测。所以像
x = optim(A, b; w=some_starting_value)
我的问题是,如果我想使用默认值,some_starting_value 的长度必须等于用户选择的A 中的列数。在 R 中,可以做类似的事情
x = optim(A, b; w=ncols(A))
Julia 中是否存在任何类似的功能?我目前的解决方案是做类似的事情
x = optim(A, b; w=0)
然后检查是否w != 0 并将其设置为optim 函数内的正确大小向量。但这似乎很老套,而且(我认为)会影响类型稳定性。
有没有一种简洁的方法来指定一个关键字参数,其大小取决于所需的参数?
编辑 它看起来像
function foo{T<:Real}(A::Array{T,2}; w=zeros(T,size(x,2)))
println("$x")
println("$y")
end
会成功的。
【问题讨论】:
标签: arguments metaprogramming julia keyword-argument type-stability