Announcement

Collapse
No announcement yet.

Prettier way to fill an array within a function?

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

    Prettier way to fill an array within a function?

    Bit of a weird question, but this is bothering me.

    If I want to fill a temporary array within a function, is there a nicer way to do it than this:

    Code:
    local Array<Int> myArray;
    myArray.AddItem(1);
    myArray.AddItem(2);
    myArray.AddItem(3);
    myArray.AddItem(4);
    ...
    Seems like i should be able to do something like:
    Code:
    local Array<Int>myArray;
    myArray = [1,2,3,4];
    Thanks in advance

    #2
    Not really, no. At least I don't think so.

    What you can do is have a function that only contains the array initialization. Or if it is really just a sequence of numbers 1-n, at least use a for loop.
    If you're repeatedly using the same array you could think about a static dynamic array initialized in defaultproperties or an array of constant size (not sure if either of these are applicable in your scenario). You may still need to copy that but at least you wouldn't need the initialization every time.

    Comment


      #3
      local array<string> A;
      local string B;

      B = "1,2,3,4,5,6,7,8,9,a,b,c,d,e";

      A = SplitString(B,",",false);

      then A[0] = 1, A[1] = 2, etc.

      good for small strings.

      You can do a bucle to copy the array to other, converting strings to float or int or what you need.

      Comment


        #4
        Nice idea. Thanks for the help guys.

        Comment


          #5
          Originally posted by coldscooter View Post
          Bit of a weird question, but this is bothering me.

          If I want to fill a temporary array within a function, is there a nicer way to do it than this:

          Code:
          local Array<Int> myArray;
          myArray.AddItem(1);
          myArray.AddItem(2);
          myArray.AddItem(3);
          myArray.AddItem(4);
          ...
          Well, there is. Use this magic:
          https://github.com/RattleSN4K3/UC-MiscArrayOps

          With that UnrealScript UCI pre-processor script, you can very much create any array with an inline expression.

          Code:
              local array<byte> array_byte;
              local array<int> array_int;
              local array<float> array_float;
              local array<string> array_string;
              local array<name> array_name;
              local array<Object> array_object;
              local array<Actor> array_actor;
              local array<class> array_class;
          
              array_byte = ! byte(1) + 2 + 127 + 255;           // {1,2,127,255}
              array_int = ! 3 + 4 + 42 + 1337;                      // {3,4,42,1337}
              array_float = ! 1.337f + 0.666f;                       // {1.337f, 0.666f}
              array_string = ! "Some" + "Fancy" + "Array";      // {"Some","Fancy","Array"}
              array_name = ! 'Could' + 'be' + 'useful';             // {'Could','be','useful'}
              array_object = ! self + self.Owner + Sprite;       // {MyActor_0,MyPlayerController_0,Sprite}
              array_actor = ! self + self.Owner;                    // {MyActor_0,MyPlayerController_0}
              array_class = ! class'MyInv1' + class'MyInv2';    // {MyInv1,MyInv2}
          All you have to do is including this file:
          ArrayOp.uci

          PS: CobaltUDK's solution is also included:
          Code:
          array_int /= "3,4,42,1337" / ",";
          or
          Code:
          array_int = int("") ~= "3,4,42,1337" / ",";

          Comment


            #6
            Wow, very nice.

            Comment


              #7
              Lol. 1 minute reply?

              Comment

              Working...
              X