Beispiel #1
0
    protected override DyObject EqOp(ExecutionContext ctx, DyObject left, DyObject right)
    {
        if (left.TypeId != right.TypeId)
        {
            return(False);
        }

        var(xs, ys) = ((DyTuple)left, (DyTuple)right);

        try
        {
            return(DyTuple.Equals(ctx, xs, ys));
        }
        catch (DyCodeException ex)
        {
            ctx.Error = ex.Error;
            return(Nil);
        }
    }
Beispiel #2
0
    private static DyObject Equatable(ExecutionContext ctx, DyObject left, DyObject right)
    {
        var self = (DyClass)left;

        if (self.TypeId == right.TypeId && right is DyClass t && t.Constructor == self.Constructor)
        {
            try
            {
                return(DyTuple.Equals(ctx, self.Fields, t.Fields));
            }
            catch (DyCodeException ex)
            {
                ctx.Error = ex.Error;
                return(Nil);
            }
        }

        return(False);
    }