Допустим, я определил тип просто как псевдоним для определенного массива в Julia
, но с дополнительной информацией, скажем, просто строкой
abstract A{T,N}
foo::AbstractArray{T,N}
bar::Real
end
Я хотел бы определить подтип, имеющий, возможно, другой элемент, но также ограничивающий второй параметр типа целым числом и имеющий значение N+1
, если B
имеет тип N
.
type B{N::Int} <: A{T,N+1}
baz::Float64
end
В этом примере ни ::Int
, ни N+1
не кажутся правильными, как и синтаксически. Я немного новичок в Джулии, но я много читал в последние дни и не мог найти решения для этого.
Как я могу сделать такой «ограниченный» подтип?
Правка: возможно, есть еще один сбой. Для супертипа N должен быть вектором, указывающим размер foo
, а для подтипа это должно быть целое число, указывающее длину вектора.
Редактировать 2: я хотел использовать abstract A
, который я отредактировал сейчас, как указано в комментариях.
Редактировать 3: Итак, я думаю, что одна проблема заключается в том, что типы abstract
не могут иметь полей (что я не понимаю, почему, но в любом случае), тогда я все же не могу объявить параметры типа, например. просто целое число. Итак, как я могу сделать что-то вроде
abstract A{T,N}
type B{N::Integer} <: A{Float64,N+1}
v:FixedVector{N+1,Float64}
end
Я всегда сталкиваюсь с проблемой, что N
всегда (независимо от того, что я делаю) остается Typevar, в то время как я хотел бы просто иметь Integer. Итак, есть ли способ сделать тип зависимым от переменной?
abstract A
. Я отредактировал это. И да, вчера я часами сидел на этой странице. - person Ronny   schedule 23.11.2016