Saya mendapatkan ERROR: LoadError: UndefVarError: Expression not defined untuk kode berikut:

struct IntLiteral
    value::Int
end

struct Plus
    left::Expression
    right::Expression
end

struct Minus
    left::Expression
    right::Expression
end

const Expression = Union{IntLiteral, Plus, Minus}

Jika saya mendeklarasikan Expression di depan Plus dan Minus, saya mendapatkan kesalahan serupa. Membungkus kode dalam module juga tidak mengubah apa pun.

Apakah ada cara untuk mereferensikan tipe sebelum deklarasi di Julia? Jika tidak, apa solusi yang disarankan untuk kasus seperti ini, di mana dua jenis saling bergantung? Hapus saja anotasi jenisnya?

Dalam kasus khusus ini, saya yakin saya bisa membuat Expression menjadi tipe abstrak, dan membuat yang lain menjadi subtipenya. Apakah itu direkomendasikan dalam kasus ini? Bagaimana dengan kasus umum?

0
Michael Hewson 14 November 2017, 06:34

1 menjawab

Jawaban Terbaik

Tidak saat ini, tidak. Lihat masalah #269 untuk detail selengkapnya.

1
mbauman 14 November 2017, 18:16