嗯..我很喜欢这样的修饰符,如长/短扩展/减少创建变量时分配的内存量,但是......
#include <stdio.h>
#define test_int int
#define long_int long int
#define long_long_int long long int
void main()
{
printf("%i\n", sizeof (test_int)); //output 4
printf("%i\n", sizeof (long_int)); //output 4. Why? wasn't I modified it's size?
printf("%i\n", sizeof (long_long_int)); //output 8
}
Run Code Online (Sandbox Code Playgroud)
由于未知原因,它将int和long int的大小打印为相同.我使用的是vc ++ 2010 express版.对不起,很难在谷歌找到答案,它总是显示长和int作为单独的类型.
如何像使用 Perl 的quotemeta 函数( \Q..\E
) 那样转义 Raku 正则表达式中的元字符?
也就是 Perl 代码
my $sentence = 'The quick brown fox jumped over the lazy dog';
my $substring = 'quick.*?fox';
$sentence =~ s{$substring}{big bad wolf};
print $sentence
Run Code Online (Sandbox Code Playgroud)
将每个.
、*
、 和?
视为元字符,从而打印The big bad wolf jumped over the lazy dog
。但是如果我将倒数第二行更改为$sentence =~ s{\Q$substring\E}{big bad wolf};
,那么 Perl 会将其.*?
视为文字字符,从而打印The quick brown fox jumped over the lazy dog
。
如何按字面意思处理 Raku 正则表达式中的字符?
我理解修饰符### %%%,但我无法弄清楚它是否可以在tcsh中将它们链接在一起.
tcsh中的示例
set f = /foo/bar/myfile.0076.jpg
echo $f:r:e
--> 0076
echo $f:h:t
--> bar
Run Code Online (Sandbox Code Playgroud)
在bash中,我想知道如何做以下事情:
echo ${f%.*#*.}
Run Code Online (Sandbox Code Playgroud)
在一条线上.
我的目标是能够在命令行上根据需要以各种方式操作文件名.我不是要为一个特定的案例编写脚本.因此,如果有一种方法可以链接这些修饰符,或者可能有另一种方式,那么我很想知道.谢谢
我正在编写一个抽象函数,它将询问用户一个给定的问题,并根据给定的正则表达式验证答案.重复该问题,直到答案与验证正则表达式匹配.但是,我还希望客户端能够指定答案是否必须符合大小写.所以像这样:
sub ask {
my ($prompt, $validationRe, $caseSensitive) = @_;
my $modifier = ($caseSensitive) ? "" : "i";
my $ans;
my $isValid;
do {
print $prompt;
$ans = <>;
chomp($ans);
# What I want to do that doesn't work:
# $isValid = $ans =~ /$validationRe/$modifier;
# What I have to do:
$isValid = ($caseSensitive) ?
($ans =~ /$validationRe/) :
($ans =~ /$validationRe/i);
} while (!$isValid);
return $ans;
}
Run Code Online (Sandbox Code Playgroud)
Upshot:有没有办法动态指定正则表达式的修饰符?
文档说修饰符是从左边应用的。但从这个例子来看,它们似乎是从右侧应用的:首先边框,然后填充,因为文本和边框之间没有空格
Text("Hi there!", Modifier.padding(10.dp).border(2.dp, Color.Magenta))
Run Code Online (Sandbox Code Playgroud)
我有一个关于 jetpack compose 修改器的问题。我不明白折叠和折叠,它们是什么以及何时可以使用它们?谢谢
技术问题:
鉴于正则表达式:
my $regEx = qr{whatever$myVar}oxi; # Notice /o for "compile-once"
Run Code Online (Sandbox Code Playgroud)
什么是迫使它按需重新编译的最有效方法?(例如,当我从程序逻辑中知道$myVar
值已经改变时)没有掉线/o
并依赖于Perl的内部智能来自动重新编译?
注意:正则表达式用于替换,这可能会影响重新编译规则sans/o:
$string2 =~ s/$regEx//;
Run Code Online (Sandbox Code Playgroud)
背景是:
我有一个正则表达式,它是通过从配置文件中插入一个相当长(> 1k长)的字符串构建的.
该文件每60分钟重新读取一次.
如果从文件读取的字符串发生更改(通过更改文件时间戳定义),我想使用重新标记的字符串值重新编译正则表达式$myVar
.
在mod_perl下运行的Perl模块中重复使用正则表达式.
这意味着(加上字符串长度> 1-2k)我必须使用" /o
"修饰符强制在正则表达式上编译一次,以避免Perl的性能损失反复检查变量值是否发生变化(此启发式来自perlop qr//
,自正则表达式用作s///
上面所示的一部分,而不是作为匹配本身.
这反过来意味着,当我知道变量在1小时内重新润滑后发生变化时,我需要强制正则表达式重新编译,尽管/o
修饰符.
更新:这里是我需要的例子/o
- 没有它,每次循环迭代都会重新编译正则表达式(因而必须检查); 它不是:
$ perl -e '{for (my $i=0; $i<3; $i++) {
my $re = qr{$i}oix; $s="123"; $s =~ s/$re//;
print "i=$i; s=$s\n"; }}'
i=0; s=123
i=1; s=123
i=2; s=123
$ perl …
Run Code Online (Sandbox Code Playgroud) 我正在尝试将一个修饰符(truncate
在我的例子中)应用于块的输出(一个tr
块,即一个转换块).我没有tr
作为修饰符,因为它不方便HTML标记.
我真的不知道我应该使用什么样的语法,也不知道它是否被允许(给定,我对块的使用可能有点时髦).
如果它有任何意义的话:
{{tr}Really long text I want to be translated then truncated{/tr}|truncate}
在检查和测试正则表达式的各个方面时,我偶然发现了一种奇怪且“不一致”的行为。我试图在正则表达式中使用一些代码,但同样的行为也适用于使用 void 代码块。特别是最让我感动的是,当我互换 :g 与 :x 修饰符时,匹配结果的差异。
以下代码片段描述了“不一致”的行为。
首先没有代码块:
use v6.d;
if "test1 test2 test3 test4" ~~ m:g/ (\w+) / {
say ~$_ for $/.list;
}
Run Code Online (Sandbox Code Playgroud)
结果:
test1
test2
test3
test4
Run Code Online (Sandbox Code Playgroud)
然后使用 :g 修饰符和代码块:
use v6.d;
if "test1 test2 test3 test4" ~~ m:g/ (\w+) {} / {
say ~$_ for $/.list;
}
Run Code Online (Sandbox Code Playgroud)
结果:
test4
Run Code Online (Sandbox Code Playgroud)
最后使用 :x 修饰符和代码块
use v6.d;
if "test1 test2 test3 test4" ~~ m:x(4)/ (\w+) {} / {
say ~$_ for $/.list;
}
Run Code Online (Sandbox Code Playgroud)
结果:
test1
test2
test3
test4 …
Run Code Online (Sandbox Code Playgroud) 再会!在 SwiftUI 中,是否可以仅对某个操作系统目标使用修饰符?在下面的代码中,我想仅将修饰符 .listStyle(SidebarListStyle()) 用于 MacOS 目标,因为它不存在于 iOS 目标。谢谢你的帮助。
import SwiftUI
struct ContentView: View {
@State var selection: Int?
var body: some View {
HStack() {
NavigationView {
List () {
NavigationLink(destination: FirstView(), tag: 0, selection: self.$selection) {
Text("Click Me To Display The First View")
} // End Navigation Link
NavigationLink(destination: SecondView(), tag: 1, selection: self.$selection) {
Text("Click Me To Display The Second View")
} // End Navigation Link
} // End list
.frame(minWidth: 350, maxWidth: 350)
.onAppear {
self.selection …
Run Code Online (Sandbox Code Playgroud)