Contract-Development
翻譯這個結構的最好方法是什麼?
假設我必須有這個資料結構:
├── Operations (struct) │ ├── date_begining (uint) │ └── date_end (uint) │ └── responsible (address) │ └── type **(?)** │ ├── Observation (struct) │ | └── Production units (string) │ | └── Parcel (string) | OR │ ├── ObservationPrague (struct) │ | └── Fon state (bool) │ | └── Trapped (string) | OR │ ├── ObservationDesiese (struct) │ | └── Other var (bool) │ | └── Some Other var (uint) | OR │ ├── Logistics (struct) │ | └── Other var1 (bool) │ | └── Some Other var1 (uint)
所以如您所見,我需要一個始終有 4 個鍵的操作結構 :
date_begining
、date_end
和. 直到現在還可以。但是現在,我的類型應該有以下 4 個選擇之一:、或,因此也有自己的鍵/值。那麼,對我來說,建構我的“類型”的最佳方式是什麼。有沒有辦法在solidity lang中說“它是這四個結構之一”?我想到了列舉,但得出的結論是不可能的,因為那樣我就無法在列舉下擁有鍵/值對。感謝任何幫助。responsible``type``Observation``ObservationPrague``ObservationDesiese``Logistics
你不能有一個可選的結構佈局。
您可以使用相關結構完成類似的操作。
└── Operations (struct) ├── date_begining (uint) └── date_end (uint) └── responsible (address) └── typeID (bytes32) └── typeSchema (refer to the class that applies)
定義四種類型:
└── Observation (struct) └── Production units (string) └── Parcel (string) └── ObservationPrague (struct) └── Fon state (bool) └── Trapped (string)
您將需要一種方法來組織這四種類型的實例。可能過於簡化:
mapping(bytes32 => Observation) observations; mapping(bytes32 => ObservationPrague) observationPragues; ...
這裡需要注意的是,這似乎有點忙,如果可能的話,我會尋找簡化鏈上設計的方法來避免這種情況。
希望能幫助到你。