问题描述
@Cacheable(value = "moviesCache")
public Collection<Movies> getMovies() {
Collection<Movies> moviesList = new ArrayList<>();
//populate moviesList by going to the DB within a Try/Catch. Return an empty list if it fails or
//a list of movies if it doesn't
return moviesList;
}
@Cacheevict("moviesCache")
public void resetMoviesCache() {
}
...的行为类似于javascript中的默认模板文字函数。
我的第一次尝试是
myTemplateTagFunction`some text ${variable} etc. etc.`
但这很快就消失了...
let mytaggedTemplate = args => `${args}`
肯定有一种更简单的方法来实现我所缺少的吗?
解决方法
也许有更短的方法,但这是我的方法:
const myTaggedTemplate = (strings,...vars) => {
let result = '';
strings.forEach((str,i) => {
result += `${str}${i === strings.length - 1 ? '' : vars[i]}`;
});
return result;
};
,
如何定义带标签的模板功能
如果定义标记的模板函数,则它必须接收字符串数组作为第一个参数,并接收任意数字的表达式作为后续参数。字符串是插入表达式之间(所有${...}
之间)的所有字符串,所有表达式都是放入${...}
中的值。
示例代码
let numExp = 2;
function tagFunction(strings,...expressions) {
let returnString = "";
for (let i = 0; i < expressions.length; i++) {
returnString += strings[i] + expressions[i];
}
returnString += strings[strings.length - 1];
return returnString;
}
console.log(
tagFunction`Using function \"${tagFunction.name}\" with ${numExp} expressions`
);
,
您需要更改功能:
let myTaggedTemplate = (strings,...values) => ...;
并尝试遵循this link
中的示例