references_02.bmx 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. 'code checks if objects are passed by reference
  2. SuperStrict
  3. Framework Brl.Standardio
  4. Type TMyObject
  5. field prop:int = 10
  6. field stringProp:string = "unmodified"
  7. End Type
  8. local obj:TMyObject = new TMyObject
  9. Function Modify:int(obj:TMyObject)
  10. obj.prop = 20
  11. End Function
  12. Function ModifyVar:int(obj:TMyObject var)
  13. obj.prop = 30
  14. End Function
  15. Function ModifyVarNew:int(obj:TMyObject var)
  16. obj = New TMyObject
  17. obj.prop = 40
  18. End Function
  19. Function ModifyProp:int(val:int var)
  20. val = 50
  21. End Function
  22. 'this should do not change the given param
  23. Function ModifyNoChange:int(val:int)
  24. val = 60
  25. End Function
  26. 'this should do not change the given param
  27. Function ModifyString:int(val:string var)
  28. val = "modified"
  29. End Function
  30. 'this should do not change the given param
  31. Function ModifyStringNoChange:int(val:string)
  32. val = "modified"
  33. End Function
  34. print obj.prop
  35. Modify(obj)
  36. print obj.prop
  37. ModifyVar(obj)
  38. print obj.prop
  39. ModifyVarNew(obj)
  40. print obj.prop
  41. ModifyProp(obj.prop)
  42. print obj.prop
  43. ModifyNoChange(obj.prop)
  44. print obj.prop
  45. ModifyStringNoChange(obj.stringProp)
  46. print obj.stringProp
  47. ModifyString(obj.stringProp)
  48. print obj.stringProp