我创建了一类提供一些云基础设施的函数。
response = self.ecs_client.register_task_definition(
containerDefinitions=[
{
"name": "redis-283C462837EF23AA",
"image": "redis:3.2.7",
"cpu": 1,
"memory": 512,
"essential": True,
},
...
Run Code Online (Sandbox Code Playgroud)
这是一个很长的 json,我只显示开头。
然后我重构了代码以使用参数而不是硬编码的哈希、内存和 CPU。
response = self.ecs_client.register_task_definition(
containerDefinitions=[
{
"name": f"redis-{git_hash}",
"image": "redis:3.2.7",
"cpu": {num_cpu},
"memory": {memory_size},
"essential": True,
},
...
Run Code Online (Sandbox Code Playgroud)
我在这段代码之前从配置文件中读取了git_hash、num_cpu和的值。memory_size
现在,我还想从文件中读取整个 json。
问题是,如果我将{num_cpu}等保存在文件中,字符串插值将不起作用。
如何从我的逻辑中提取 json 并仍然使用字符串插值或变量?
我知道在 Angular2+ 中我们可以在 html 中创建条件,如下所示:
<p>{{ dynamicData.value? dynamicData.value : dynamicData.default}}</p>
Run Code Online (Sandbox Code Playgroud)
我们也可以这样做:
<p>{{ dynamicData.value? 'text 1' : 'text 2'}}</p>
Run Code Online (Sandbox Code Playgroud)
但我想结合这两种解决方案,但我不知道如何做到这一点。一般来说,我想做这样的事情:
<p>{{ dynamicData.value? 'Dynamic data value is equal: {{dynamicData.value}}' : 'no dynamic data'</p>
Run Code Online (Sandbox Code Playgroud)
您知道如何处理此文本插值吗?
我正在尝试制作一个与此类似的功能
pub const fn insert(num1:i32, num2:i32) -> &'static str {
formatcp!("n1:{}, n2:{}" , num1, num2)
}
Run Code Online (Sandbox Code Playgroud)
但 num1/num2 不是 const。我认为这作为宏是可能的,但我在宏方面没有经验。
在尝试回答这个问题时,我发现了一个奇怪的行为。
Text(LocalizedStringKey("Hello \(Image(systemName: "globe"))"))
Run Code Online (Sandbox Code Playgroud)
显示一个地球仪,但是
Text(LocalizedStringKey("Hello {world}".replacingOccurrences(of: "{world}", with: "\(Image(systemName: "globe"))")))
Text(LocalizedStringKey("Hello" + "\(Image(systemName: "globe"))"))
Run Code Online (Sandbox Code Playgroud)
显示“Hello”,然后是一堆 SwiftUI 内部术语。
一个更简单的例子是:
let x = "\(Image(systemName: "globe"))"
print(LocalizedStringKey.init(x))
print(LocalizedStringKey.init("\(Image(systemName: "globe"))"))
Run Code Online (Sandbox Code Playgroud)
我传递给的值LocalizedStringKey.init应该是相同的"\(Image(systemName: "globe"))",但是第一个打印
LocalizedStringKey(key: "%@", hasFormatting: true, arguments: [...])
和第二张照片
LocalizedStringKey(key: "Image(provider: SwiftUI.ImageProviderBox<SwiftUI.Image.(unknown context at $7ff91ccb3380).NamedImageProvider>)", hasFormatting: false, arguments: [])
似乎LocalizedStringKey.init改变其行为取决于我传递的参数是否是(内插的)字符串文字。
据我所知,这两个调用正在LocalizedStringKey.init调用相同的初始化程序。中只有一个无参数标签初始化程序LocalizedStringKey,它采用String.
如果还有一个接受 a 的初始化程序LocalizedStringKey,结果会更容易理解。毕竟LocalizedStringKey 有自定义的字符串插值规则,而且是专门针对的。Image但据我所知,这是唯一没有参数标签的初始化程序。
如果初始化器的参数是 ,这也可以理解@autoclosure () -> String …
use v6.d;
my Str $foo = 'Hello';
my constant $BAR = "--$foo--";
say $BAR;
Run Code Online (Sandbox Code Playgroud)
Use of uninitialized value element of type Str in string context.
Methods .^name, .raku, .gist, or .say can be used to stringify it to something meaningful.
in block at deleteme.raku line 4
----
Run Code Online (Sandbox Code Playgroud)
--Hello--
Run Code Online (Sandbox Code Playgroud)
my没有或 代替our也会发生同样的事情my。
[187] > $*DISTRO
macos (12.6)
[188] > $*KERNEL
darwin
[189] > $*RAKU
Raku (6.d)
Run Code Online (Sandbox Code Playgroud)
在 C# 11 中,我们现在可以在内插字符串中包含换行符。所以我们可以写这样的代码:
string pageTitle = "";
string header = $"Header: {
pageTitle switch
{
"" => "No title",
_ => pageTitle
}}";
Run Code Online (Sandbox Code Playgroud)
除了 switch 语句之外,有没有办法在这里编写其他代码?
我尝试了一个if,它告诉我这if是一个无效的表达术语。
string header51 = $"Header: {
if (pageTitle5 == "")
{
"No title";
}
else
{
pageTitle5;
}
}";
Run Code Online (Sandbox Code Playgroud)
除了 switch 之外还有其他语句可以在这里使用吗?
我正在使用python2.7,我想知道使用元组进行pythons字符串插值的原因是什么.TypeErrors在做这么少的代码时,我开始陷入困境:
def show(self):
self.score()
print "Player has %s and total %d." % (self.player,self.player_total)
print "Dealer has %s showing." % self.dealer[:2]
Run Code Online (Sandbox Code Playgroud)
打印:
Player has ('diamond', 'ten', 'diamond', 'eight') and total 18
Traceback (most recent call last):
File "trial.py", line 43, in <module>
Blackjack().player_options()
File "trial.py", line 30, in player_options
self.show()
File "trial.py", line 27, in show
print "Dealer has %s showing." % (self.dealer[:2])
TypeError: not all arguments converted during string formatting
Run Code Online (Sandbox Code Playgroud)
所以我发现我需要更改错误来自的第四行,以此:
print "Dealer has %s %s showing." % …Run Code Online (Sandbox Code Playgroud) 我在erb中有以下代码可以正常工作:
<div id='flash_<%= flash.keys.first.to_s %>'>
<%=h flash[flash.keys.first] %>
</div>
Run Code Online (Sandbox Code Playgroud)
我想把它转换为haml:
#flash_#{flash.keys.first.to_s}
=h flash[flash.keys.first]
Run Code Online (Sandbox Code Playgroud)
但我收到错误:
Illegal element: classes and ids must have values.
Run Code Online (Sandbox Code Playgroud)
这是奇怪的,因为有IS值,'flash_'部分始终存在,即使我这样做,我也会得到错误:
#flash_#{nil.object_id}
Run Code Online (Sandbox Code Playgroud)
显然我的Ruby插值在haml中有些不对劲,但我无法做到.根据文档http://haml.info/docs/yardoc/file.REFERENCE.html#ruby_interpolation_# {}用于内插Ruby,它适用于这种情况:
#flash_
#{flash.keys.first.to_s}
Run Code Online (Sandbox Code Playgroud)
但这不是我想要的.
总之,我想得到以下输出:
<div id="flash_foo"> blahblah </div>
Run Code Online (Sandbox Code Playgroud)
但它也可以:
<div id="flash_"></div>
Run Code Online (Sandbox Code Playgroud)
如何用haml获得?
在Ruby文件中输入双引号时,Sublime会{}在您输入时自动添加#.这是一个巨大的麻烦,并混淆了我的bejeezus.我怎么让它停下来?
虽然是一位经验丰富的程序员,但我对js完全不熟悉并做出反应.
我试图在我自己的组件中使用该react-native-svg组件Path.对于示例,一切都很清楚,但它使用字符串文字作为坐标.例如:
<Path d="M 10 20 L 30 40" stroke="red" />
Run Code Online (Sandbox Code Playgroud)
不过,我想用坐标从我的组件的道具x1,y2,x2,y2而不是文字,但我无法弄清楚如何将它们种植到引用字符串与各个字符一起M和L就是例子.
python ×2
angular ×1
autocomplete ×1
c# ×1
c#-11.0 ×1
constants ×1
dynamic ×1
haml ×1
html ×1
javascript ×1
json ×1
raku ×1
react-native ×1
rust ×1
shortcuts ×1
sublimetext2 ×1
swift ×1
swiftui ×1
tuples ×1