使用julia迭代器作为常规向量

bap*_*ste 1 iterator vector julia

下面我很困惑,

sqrt(1:3) * [1 2 3]
# 3x3 Matrix, as expected
sqrt(1:3) * 1:3
# error `colon` has no method matching...
Run Code Online (Sandbox Code Playgroud)

直到我意识到1:3必须是一种不同类型的野兽,即不仅仅是我从Matlab预期的向量.我目前的解决方法是使用hcat将其转换为矢量sqrt(1:3) * hcat(1:3...),是否有更好的方法?

Iai*_*ing 5

第二个版本的主要问题

sqrt(1:3) * 1:3
Run Code Online (Sandbox Code Playgroud)

实际上是运算符优先级.冒号运算符的优先级非常低,因此转换为

(sqrt(1:3) * 1):3
Run Code Online (Sandbox Code Playgroud)

这是荒谬的,因此错误

 ERROR: `colon` has no method matching colon(::Array{Float64,1}, ::Int64)`
Run Code Online (Sandbox Code Playgroud)

话虽如此,如果你用括号"修复它"它不起作用,因为没有定义运算符.因此你可能想要sqrt(1:3) * [1:3]'.