मान लीजिए मैं निम्नलिखित प्रकारकैसे निर्धारित करने के लिए एक प्रकार पैरामीटर एक विशेषता है की एक उप-प्रकार है कि क्या?
class Foo
trait Bar
वहाँ एक तरीका है जिसके एक प्रकार पैरामीटर, टी में ले जाता है, और निर्धारित करते हैं कि टी एक बार है के लिए एक रास्ता है? उदाहरण के लिए,
def isBar[T <: Foo: Manifest] =
classOf[Bar].isAssignableFrom(manifest[T].erasure)
दुःख की बात है isBar[Foo with Bar]
false
है क्योंकि विलोपन mixins को मिटाने के लिए लगता है।
इसके अलावा, manifest[Foo with Bar] <:< manifest[Bar]
गलत है
बिल्कुल यह संभव है?
मैं इस सवाल को देखा: How to tell if a Scala reified type extends a certain parent class?
लेकिन यह है कि इस सवाल का जवाब लक्षण में मिश्रित-साथ काम नहीं करता के रूप में वे के रूप में ऊपर सबूत मिटाया जा लगते हैं।
एक फुटनोट के रूप में: 'typeTag [बार साथ फू]' (2.10 में <बहुत पसंद 'Predef.manifest') के लिए' 'परोक्ष [TypeTag [बार] के साथ फू] उपयोगी आशुलिपि है। शॉर्टकट की –
भाषण, 'typeof [टी]' 'typeTag [टी] .tpe' के बराबर है। –