• pooberbee (they/she)
      link
      fedilink
      arrow-up
      2
      arrow-down
      1
      ·
      2 days ago

      Yeah, you would get a runtime error calling that member without checking that it exists.

      • masterspace@lemmy.ca
        link
        fedilink
        English
        arrow-up
        1
        ·
        edit-2
        19 hours ago

        Because that object is of a type where that member may or may not exist. That is literally the exact same behaviour as Java or C#.

        If I cast or type check it to make sure it’s of type Bar rather than checking for the member explicitly it still works:

        And when I cast it to Foo it throws a compile time error, not a runtime error: