Скажем, у меня есть переменная Array, называемая p:
julia> p = [5]
julia> typeof(p)
Array{Int64,1}
Как мне преобразовать его в скаляр? p также может быть двумерным:
julia> p = [1]''
julia> typeof(p)
Array{Int64,2}
(Примечание: двойной трансформаторный трюк для увеличения размерности может не работать в будущих версиях Julia)
С помощью соответствующих манипуляций я могу сделать p любого измерения, но как его уменьшить до скаляра?
Один жизнеспособный подход p=p[1], но это не вызовет ошибки, если p имеет более одного элемента в p; так, что мне нехорошо.
Я мог бы создать свою собственную функцию (с проверкой),
function scalar(x)
assert(length(x) == 1)
x[1]
end
но похоже, что он должен изобретать колесо.
Не работает squeeze, который просто снимает размеры до тех пор, пока p не станет нулевым массивом.
(Связано с Julia: преобразование массива 1x1 из внутреннего продукта в число, но в этом случае операция-агностик.)