में जेनेरिक के साथ रिकर्सिव एन्युमरेशंस मैं स्विफ्ट के लिए नया हूं। मैं पुनरावर्ती enumerations और जेनरिक के साथ एक द्विआधारी पेड़ को लागू करने की कोशिश कर रहा था:स्विफ्ट
$ swift ADT.swift
ADT.swift:83:20: error: cannot convert value of type 'BinaryTree<T>' to expected argument type 'BinaryTree<_>'
return inorder(left) + [val] + inorder(right)
^~~~
बहरहाल, यह काम करता है::
func inorder<T>(_ root: BinaryTree<T>) -> [T] {
switch root {
case .Nothing:
return []
case let .Node(val, left, right):
let l = inorder(left)
let r = inorder(right)
return l + [val] + r
}
}
वहाँ है कोई गलती
enum BinaryTree<T> {
indirect case Node(T, BinaryTree<T>, BinaryTree<T>)
case Nothing
}
func inorder<T>(_ root: BinaryTree<T>) -> [T] {
switch root {
case .Nothing:
return []
case let .Node(val, left, right):
return inorder(left) + [val] + inorder(right)
}
}
यहाँ त्रुटि मुझे मिल गया है मेरे वाक्यविन्यास में? धन्यवाद!
मैं स्विफ्ट 3.0 का उपयोग कर रहा हूं।
स्पष्टीकरण के लिए धन्यवाद। यह दिलचस्प है कि कुछ समाधान मूल के मुकाबले प्रकारों के बारे में और जानकारी प्रदान किए बिना संकलित भी करते हैं। –
@ कुआं-यिंग चौउ: ठीक है, सभी समाधानों में आम बात यह है कि संकलक को (infix) '+' ऑपरेटर के जंजीर उपयोग के लिए सभी प्रकारों का अनुमान लगाने की आवश्यकता नहीं है। कि संकलक संकलित करने में विफल रहता है जिसे एक बग के रूप में पुष्टि की जाती है, हालांकि। मैंने तदनुसार अपना जवाब अपडेट कर लिया है। – thm