Well, in the D programming language, both opIndex and opSlice are two different operators used to access elements of a custom type.

    struct S(T)
    {
        T[] arr;

        T opIndex(size_t index) const
        {
            assert(index < arr.length, "Index out of range");
            return arr[index];
        }

        T[] opSlice(size_t startIndex, size_t endIndex) const
        {
assert(startIndex <= endIndex && endIndex <= arr.length, "Invalid slice indices");
            return arr[startIndex..endIndex];
        }
    }

    alias Type = int;
    void main()
    {
        auto s = S!Type([1, 2, 3]);

        auto element = s[0]; // Calls s.opIndex()
        assert(element == 1);

        auto slice = s[1..3]; // Calls s.opSlice()
        assert(slice == [2, 3]);
    }

Thanks

Reply via email to