假设我有一个 freemarker 宏:
<#macro helloObject>
World
</#macro>
Run Code Online (Sandbox Code Playgroud)
在某些情况下,我可以轻松调用它:
Hello, <@helloObject/>!
Run Code Online (Sandbox Code Playgroud)
但是插入它的语法是什么,例如,如果它是字符串的一部分?
<#assign greeting="Hello, <@helloObject>!" /> <#-- doesn't work -->
<#assign greeting="Hello, ${helloObject}!" /> <#-- doesn't work -->
<#assign greeting="Hello, ${@helloObject}!" /> <#-- doesn't work -->
<#assign greeting="Hello, ${<@helloObject/>}!" /> <#-- doesn't work -->
<#assign greeting="Hello, @helloObject!" /> <#-- doesn't work -->
${greeting}
Run Code Online (Sandbox Code Playgroud) template-engine freemarker templating templating-engine string-interpolation
我通过 PHP 编程注意到字符串插值 ( "blah blah ${foo}") 只能在双引号字符串 ( "...") 中工作。
例如,这一行将起作用:
$bar = "foo";
echo "I like ${bar}";
>> I like foo
Run Code Online (Sandbox Code Playgroud)
但这个不会:
$bar = "foo";
echo 'I like ${bar}';
>> I like ${bar}
Run Code Online (Sandbox Code Playgroud)
我知道PHP 手册谈到了插值仅在此类字符串中起作用的事实,但它没有解释为什么选择它以这种方式工作。
这就是我的问题——为什么字符串插值仅适用于 PHP 中的双引号字符串?
我正在 RDBMS 上执行查询并获取字符串形式的结果。字符串看起来像这样:
val DBASE = "my_database"
val FREQ = "monthly"
val queryResult: String = sqlContext.read.jdbc(...).collect.map(...).first
// queryResult = Database is $$${DBASE} and frequency is $$${FREQ}
Run Code Online (Sandbox Code Playgroud)
接下来我将替换$$$为$,所以我留下类似的内容:
queryResult = "Database is ${DBASE} and frequency is ${FREQ}"
Run Code Online (Sandbox Code Playgroud)
如何在DBASE和上使用字符串插值FREQ?我努力了:
val substituted = f"${queryResult}"
Run Code Online (Sandbox Code Playgroud)
和
val substituted = s"${queryResult}"
Run Code Online (Sandbox Code Playgroud)
但变量并没有被替换。除了使用以下内容之外,我还能做些什么:
queryResult.replaceAll("\\$\\{DBASE\\}", DBASE).replaceAll(...)
Run Code Online (Sandbox Code Playgroud) 在下面的代码行中,反斜杠告诉 Swift 做什么?
print("The total cost of my meal is \(dictionary["pizza"]! + dictionary["ice cream"]!)")
Run Code Online (Sandbox Code Playgroud) 我正在研究 Angular,并试图根据"cardData.color".
例如
cardData = {id: '1', color: '#202020'};
Run Code Online (Sandbox Code Playgroud)
我已经尝试了下面显示的代码,但它不起作用。
<div style="background-color: {{cardData.color}}; padding: 10px 20px;"></div>
Run Code Online (Sandbox Code Playgroud)
有什么办法,我可以根据对象的颜色动态设置背景颜色??谢谢你。
在我的 Angular 项目中,我有一个 A 类:
export class A {
id: number;
public displayName(): string{
return "a";
}
Run Code Online (Sandbox Code Playgroud)
在我的组件中,我有一个类型为 A 的数组,因此 component.ts 具有以下行:
arrayOfAs: Array<A>;
Run Code Online (Sandbox Code Playgroud)
在 component.html 中,我只想在 ngFor 循环中显示字符串函数的数字和结果:
<div *ngFor="let element of arrayOfAs">
{{element.id}}, {{element.displayName()}}
</div>
Run Code Online (Sandbox Code Playgroud)
可以显示 id,但对于该函数,我收到错误消息:
类型错误:_v.context.$implicit.displayName 不是函数
如何在插值中使用函数?
显然,这只是我真实案例的简化版本。谢谢
我正在尝试在插值字符串块中转义一个“”字符,如下所示。
var name = "Mr. Roguers";
var htmlEmail = $@"
<p>Dear {name},</p>
<p>Please click this awesome <a href=\"google.com\">link.</a></p>
";
Console.WriteLine(htmlEmail);
Run Code Online (Sandbox Code Playgroud)
我看过很多地方,有人可以使用$和@来提供一些指导或解决方案来避免这种情况。我希望我的代码像这样多行,以便清晰阅读,这就是为什么我有@符号。我也想使用$字符串插值。
此代码无法使用.NET Core 2.2进行编译
我正在自己的解决方案中在Visual Studio中对其进行测试,并且这个简单的示例也在https://dotnetfiddle.net/上进行了测试。
我有以下代码:
const [answerObject, setAnswerObject] = useState({})
const answerItem = {"question_" + survey.id, selectedAnswer}
setAnswerObject(answerObject + answerItem)
Run Code Online (Sandbox Code Playgroud)
我正在尝试得到这个结果:
answers = {
question_1: 'text from answer 1',
question_2: 'text from answer 2',
question_3: 'text from answer 3',
}
Run Code Online (Sandbox Code Playgroud)
但是我在插值时遇到了麻烦。我尝试了很多不同的方法但没有运气。任何正确格式化它的帮助或建议都会很棒。
我正在尝试在 Vue.js 3 中设置自定义分隔符,但它似乎不起作用。
我尝试的第一件事是delimiters像这样设置组件参数:
export default defineComponent({
delimiters: ["${", "}$"],
// ...
})
Run Code Online (Sandbox Code Playgroud)
但什么也没有发生。
然后我尝试像这样设置main.ts文件:
import { createApp } from "vue";
import router from "./router";
import App from "./App.vue";
App.delimiters = ["${", "}$"];
createApp(App)
.use(router)
.mount("#app");
Run Code Online (Sandbox Code Playgroud)
模板中的字符串插值再次不起作用。
我错过了什么?
我试图弄清楚 bash 中是否有一种更短的方法,仅当变量的值非空时才将其有条件地附加到数组中。
我相信以下是正确的,但有点“罗嗦”
my_array=()
if [[ "${my_first_var:-}" ]]; then
my_array+=( "${my_first_var}" )
fi
if [[ "${my_second_var:-}" ]]; then
my_array+= ( "${my_second_var}" )
fi
Run Code Online (Sandbox Code Playgroud)
我这么问是因为我正在尝试清理一些执行此操作的代码:
my_array+=( ${my_first_var:-} ${my_second_var:-} )
Run Code Online (Sandbox Code Playgroud)
这是一个“有效”的 hack,可以有条件地仅将非空值附加到my_array,并且很好,因为它使用数组插值,但有一个问题,如果字符串中my_var包含空格(或IFS设置为任何内容),它会执行某些操作非常意外(将多个元素附加到数组中)。
我可能想到了这一点,但我不确定我的意图是否足够明确。
[[ "${my_first_var:-}" ]] && my_array+=( "${my_first_var}" )
[[ "${my_second_var:-}" ]] && my_array+=( "${my_second_var}" )
Run Code Online (Sandbox Code Playgroud)
有没有一种方法可以有条件地仅附加非空值,该值简洁但惯用且清晰?
angular ×2
string ×2
arrays ×1
bash ×1
c# ×1
css ×1
freemarker ×1
inline ×1
javascript ×1
php ×1
reactjs ×1
scala ×1
swift ×1
templating ×1
typescript ×1
vue.js ×1
vuejs3 ×1