Я хочу построить структуру, как в доске, где тип значения обернут так, что BlackboardValue
можно обойти без ограничения того типа, который он фактически хранит.Класс, представляющий любое значение. Тип должен быть скрытым, но тип должен быть сопоставим.
Во-вторых, мне нужно проверить, соответствуют ли два BlackboardValue
s значение того же типа. Использование BlackboardValue<T>
не будет работать, поскольку кажется, что BlackboardValue<String>
не может храниться рядом с BlackboardValue<Double>
и другими проблемами. BlackboardValue
должен быть одного типа.
Я думаю, что проблема может быть сведена к тому, что я, кажется, не в состоянии проверить, если два Упаковщики держать один и тот же тип:
import Foundation
class Wrapper {
var value: Any?
init(v: Any) {
self.value = v
}
}
func wrappersHoldTheSameValueType(w1: Wrapper, w2: Wrapper) -> Bool {
return false
}
var w = Wrapper(v: "Hans")
var d = w.value as String
Я буду принимать ответ, поскольку он работает. Но я думаю, что многие люди будут рады, если эта информация будет обновлена, когда кто-то найдет «более чистые» решения. Но да, это работает для всех типов, которые я пробовал. – Alex
Поскольку у вас есть более глубокое понимание внутренних работ: есть ли у вас идея сравнить обертку (ее значение) и тип типа isOfType (значение, тип) -> Bool ..? – Alex
Здесь https://gist.github.com/hisui/4b0ac6f8591c0396f838 – findall