How to do a parametrizable access to a bit slice

In reply to sylvainb:
This seems very readable to me:

function bit[31:0] assign_value (
                                    bit [31:0] initial_value,
                                    bit [31:0] assigned_field,
                                    int        lsb,
                                    int        msb);
 
      assign_value = initial_value;
      for(int index=lsb; index <= msb; index++) assign_value[index] = assigned_field[index-lsb];
endfunction : assign_value