关于function中嵌套for的语法问题

`timescale 1ns/1ns
module function_mod(
	input [3:0]a,
	input [3:0]b,
	
	output [3:0]c,
	output [3:0]d
);
    function [3 : 0] invert;
        input [3 : 0] in;
        reg [3 : 0] invert;
            integer i;
            for (i = 0; i < 4; i = i + 1)begin
                invert[i] = in[3 - i];
            end
    endfunction
    assign c = invert(a);
    assign d = invert(b);
    

endmodule

第二个因为多加一组begin end 而编译不通过,猜测function中只能有一组beginend,

`timescale 1ns/1ns
module function_mod(
	input [3:0]a,
	input [3:0]b,
	
	output [3:0]c,
	output [3:0]d
);
    function [3 : 0] invert;
        input [3 : 0] in;
        reg [3 : 0] invert;
        begin
            integer i;
            for (i = 0; i < 4; i = i + 1)begin
                invert[i] = in[3 - i];
            end
        end
    endfunction
    assign c = invert(a);
    assign d = invert(b);
    

endmodule

而且function中也不能写成这个形式,不能直接索引位数

`timescale 1ns/1ns
module function_mod(
	input [3:0]a,
	input [3:0]b,
	
	output [3:0]c,
	output [3:0]d
);
    function [3 : 0] invert;
        input [3 : 0] in;
        reg [3 : 0] invert;
        begin
            invert = in[0 : 3];
        end
    endfunction
    assign c = invert(a);
    assign d = invert(b);
    

endmodule