What's the difference between these two calls to a function taking a collection of structural types?
        Posted  
        
            by James Moore
        on Stack Overflow
        
        See other posts from Stack Overflow
        
            or by James Moore
        
        
        
        Published on 2010-05-16T20:18:05Z
        Indexed on 
            2010/05/16
            20:20 UTC
        
        
        Read the original article
        Hit count: 307
        
Why does the call to fn(Iterator("foo") compile, but the call to fn(fooIterator) fail with an error "type mismatch; found : Iterator[java.lang.String] required: scala.Iterator[com.banshee.Qx.HasLength]"
object Qx {
    type HasLength = {def length: Int}
    def fn(xs: Iterator[HasLength]) = 3
    var tn = fn(Iterator("foo"))
    var fooIterator = Iterator("foo")
    var tnFails = fn(fooIterator) //doesn't compile
}
Aren't they the same thing?
© Stack Overflow or respective owner