ID:2967449
 
Applies to:Dream Maker
Status: Open

Issue hasn't been assigned a status value.
js example: https://developer.mozilla.org/en-US/docs/Web/JavaScript/ Reference/Global_Objects/Object/ valueOf#overriding_valueof_for_custom_objects

So something like this would be possible:

/datum/blackbox
var/value

/datum/blackbox/New(number)
value = number

/datum/blackbox/asNum() // like js valueOf
return value

var/datum/blackbox = new(5)

var/test = 5 + blackbox // 10

// or even like this
var/alist/L = alist("one" = new/datum/blackbox(5), "two" = new/datum/blackbox(10))

values_sum(L) // 15
values_product(L) // 50


I tried to do this with current operator reloading, but it does not work properly in all cases. For example, operator order is important, so i can't overload datum's "+" and do

5 + blackbox


because this give me type mismatch runtime. And things like values_sum() don't work either.

Login to reply.