Using Operators in structs, not +/- or </= or */divide, +rep for help

GFreak45

I didnt slap you, i high 5'd your face.
Reaction score
130
I was wondering how to properly use and read operators in structs, ie:
JASS:
struct example
    private operator [] blah blah blah
endstruct


you get the picture. :/
 

GFreak45

I didnt slap you, i high 5'd your face.
Reaction score
130
i didnt intend to discuss it on ayanami's tutorial, i just noticed he/she didnt have it included so i requested it, to improve the tutorial

where we left off:

I get the idea of operators now, but i was wondering if they would work with functions, ie:
JASS:
private function operator x++ takes nothing returns integer
    set x = x + 1
    return x
endfunction
 

Bribe

vJass errors are legion
Reaction score
67
There is also no such thing as a "function operator". There are only method operators.
 

GFreak45

I didnt slap you, i high 5'd your face.
Reaction score
130
bummer :(
what about non-static operators? all iv seen used are static so far... are they just basically like regular methods? where they take an integer arguement not listed in the normal arguments and its name is this

ok, so how about this?
JASS:
private static method operator [][] takes string one, string two returns integer
    return S2I(one + two)
endmethod

private static method example takes nothing returns integer
    return [&quot;blah one&quot;][&quot;blah two&quot;] //would this work right? and does the struct need to be included in that?
endmethod
 

Dirac

22710180
Reaction score
147
No you can't do that, alas there's no such thing as a direct "[][]" operator. And yes you have to include the struct in it.

Ex:
JASS:
//here i&#039;m overriding the struct[] operator
static method operator [] takes unit u returns thistype //returns an instance
	return GetUnitUserData(u)
endmethod

//here i&#039;m overriding the instance[] operator
method operator [] takes unitstate us returns real
	return GetUnitState(GetUnitById(this),us)
endmethod

//result

set hp = thistype[unit][UNIT_STATE_LIFE]
 

GFreak45

I didnt slap you, i high 5'd your face.
Reaction score
130
ok thanks, thats what i wanted to know

EDIT:
wrote up a quick practice script, tell me if you see anything off, it should display the following in order:
0
10
Life of Unit
Life of Unit - 50
JASS:
library OperatorPractice
    struct SetStats extends array
        private method operator []= takes unitstate u, real r returns nothing
            call SetUnitState(GetIndexUnit[this], u, r)
        endmethod
        private static method operator [] takes unit u returns integer
            return GetUnitUserData(u)
        endmethod
        private method operator [] takes unitstate u returns real
            return GetUnitState(GetIndexUnit[this], u)
        endmethod
        private static method operator []= takes unit u, integer i returns nothing
            call SetUnitUserData(u, i)
        endmethod
        
        private static method onInit takes nothing returns nothing
            call BJDebugMsg(I2S(thistype[someunit]))
            set thistype[someunit]=10 //or whatever integer you want
            call BJDebugMsg(I2S(thistype[someunit]))
            call BJDebugMsg(I2S(R2I(thistype[someunit][UNIT_STATE_LIFE])))
            set thistype[someunit][UNIT_STATE_LIFE]=(thistype[someunit][UNIT_STATE_LIFE]-50)
            call BJDebugMsg(I2S(R2I(thistype[someunit][UNIT_STATE_LIFE])))
        endmethod
    endstruct
endlibrary
 

Dirac

22710180
Reaction score
147
Yes that should work, but you confused the function operator () with [] here
JASS:
GetIndexUnit[this]

Other than that looks fine
 

GFreak45

I didnt slap you, i high 5'd your face.
Reaction score
130
my bad
if i override the [], []=, (), and ()= operators for non-static methods can i use them all in the same line?
like this:
[ljass]thistype[static][non-static](nonstatic)[/ljass]
i assume thats a no, but i wanted to see if it was possible, basically adding extra function calls to a single line
 
General chit-chat
Help Users
  • No one is chatting at the moment.

      The Helper Discord

      Members online

      No members online now.

      Affiliates

      Hive Workshop NUON Dome World Editor Tutorials

      Network Sponsors

      Apex Steel Pipe - Buys and sells Steel Pipe.
      Top