package builtins import ( "monkey/internal/context" "monkey/internal/object" "monkey/internal/typing" ) // Len ... func Len(ctx context.Context, args ...object.Object) object.Object { if err := typing.Check( "len", args, typing.ExactArgs(1), ); err != nil { return newError(err.Error()) } switch obj := args[0].(type) { case object.String: return object.Integer{Value: int64(obj.Len())} case *object.Array: return object.Integer{Value: int64(obj.Len())} case *object.Hash: return object.Integer{Value: int64(obj.Len())} default: return newError("TypeError: object of type '%s' has no len()", args[0].Type()) } }