freemarker 通过引用或值分配?它有什么缺点吗?
freemarker assign by reference or by value? Has it any disadvantages?
我正在做一个使用 ftl 的项目。
我正在广泛使用 <#assign>,所以我想知道一直使用它有多安全。它是按引用存储还是按值存储?问题是我在 for 循环中连续分配一个矩阵或 table。我不确定我是否正确使用它,但它可能会导致我的系统崩溃。它与Java的Heap或Stack有密切关系吗?我的数据处理量很大。
#assign
做什么并不重要。重要的是您使用什么运算符来操作这些矩阵。 FreeMarker 运算符假设所有数据结构(如 List
-s 或 Map
-s)都是不可变的,因此它们不会修改支持(包装)List
-s 或 Map
-s。但是如果你在那些对象上调用 Java 方法,这取决于你调用的方法。就像如果你在 Map
上调用 put(key, value)
,那么 Map
将被修改。 (但默认情况下,FreeMarker 甚至不公开 Map
-s 和 List
-s 的 Java 方法。模板通常不应该修改数据模型,所以 FreeMarker 使相当难不小心做。)
我正在做一个使用 ftl 的项目。 我正在广泛使用 <#assign>,所以我想知道一直使用它有多安全。它是按引用存储还是按值存储?问题是我在 for 循环中连续分配一个矩阵或 table。我不确定我是否正确使用它,但它可能会导致我的系统崩溃。它与Java的Heap或Stack有密切关系吗?我的数据处理量很大。
#assign
做什么并不重要。重要的是您使用什么运算符来操作这些矩阵。 FreeMarker 运算符假设所有数据结构(如 List
-s 或 Map
-s)都是不可变的,因此它们不会修改支持(包装)List
-s 或 Map
-s。但是如果你在那些对象上调用 Java 方法,这取决于你调用的方法。就像如果你在 Map
上调用 put(key, value)
,那么 Map
将被修改。 (但默认情况下,FreeMarker 甚至不公开 Map
-s 和 List
-s 的 Java 方法。模板通常不应该修改数据模型,所以 FreeMarker 使相当难不小心做。)