Это функция, которую я пытался использоватьНужна помощь в использовании Swift InOut с дополнительным
func merge(inout A: DNode?, inout And B: DNode?) -> DNode? {
if A == nil && B == nil {
return nil
}
if A == nil {
return B
}
if B == nil {
return A
}
return A!.isLessThan(B!) ? A! : B!
}
Вот как я пытался использовать функцию «слияния»
class Heap {
var minDNode: DNode?
func start(inout newNode: DNode) {
self.minDNode = merge(&self.minDNode, And: &newNode) // error
// Cannot invoke 'merge' with an argument list of type '(inout DNode?, And: inout DNode)'
}
func merge(inout A: DNode?, inout And B: DNode?) -> DNode? {
...
}
}
Как это можно исправить проблема?
Глядя на ответ от Swift optional inout parameters and nil,
делает
var minDNode: DNode?
в
var minDNode: DNode? = nil
не решить проблему
Почему 'merge()' принимает inout параметры? Аргументы не изменяются, поэтому это кажется ненужным осложнением. –
о, я вырезал длинную часть из функции –