在脚本中间,我想检查命令行上是否传递了给定的标志.以下是我想要的,但看起来很难看:
if echo $* | grep -e "--flag" -q
then
echo ">>>> Running with flag"
else
echo ">>>> Running without flag"
fi
Run Code Online (Sandbox Code Playgroud)
有没有更好的办法?
注:我明确地不希望列出一个开关/ getopt的所有标志.(在这种情况下,任何这样的东西都会变成完整脚本的一半或更多.而且if的主体也只是设置了一组变量)
我有一些使用该log程序包的密集检测代码.现在是关闭日志记录的时候了,我无法确定如何关闭标准记录器.
我错过了什么吗?我应该在进行日志调用之前检查一个标志,还是在生产中将它们注释掉?
我出于好奇而问这个问题.基本上我的问题是当你有一个数据库需要一个行条目来做一些像旗帜一样的东西时,最佳做法是什么?一个很好的例子就是堆栈溢出上的徽章,或者bugzilla中的操作系统字段.可以为给定条目设置标志的任何子集.
通常,我做c和c ++工作,所以我的直觉反应是使用无符号整数字段作为一组可以翻转的位......但我知道这不是一个好的解决方案,原因有几个.其中最明显的是比例能力,我可以拥有多少旗帜的硬上限.
我还可以考虑其他几种解决方案,这些解决方案可以更好地扩展,但会出现性能问题,因为它们需要多次选择才能获得所有信息.
那么,做到这一点的"正确"方法是什么?
MDN说:
要执行"粘性"搜索,从目标字符串中的当前位置开始匹配,请使用y标志.
我不太明白.
我正在使用下面的这一行,以便在我的TextView上设置删除线:
tv.setPaintFlags(tv.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG);
Run Code Online (Sandbox Code Playgroud)
然而,稍后在片段中,如果他们再次单击TextView,我希望删除删除线.我可以使用哪一行代码来简单地让TextView再次显示正常格式的文本?
提前致谢!
我必须为我声明的每个标志类型构建一个扩展方法,如下所示:
public static EventMessageScope SetFlag(this EventMessageScope flags,
EventMessageScope flag, bool value)
{
if (value)
flags |= flag;
else
flags &= ~flag;
return flags;
}
Run Code Online (Sandbox Code Playgroud)
为什么不存在一个Enum.SetFlag像Enum.HasFlag?
另外,为什么这总不起作用?
public static bool Get(this EventMessageScope flags, EventMessageScope flag)
{
return ((flags & flag) != 0);
}
Run Code Online (Sandbox Code Playgroud)
例如,如果我有:
var flag = EventMessageScope.Private;
Run Code Online (Sandbox Code Playgroud)
并检查它:
if(flag.Get(EventMessageScope.Public))
Run Code Online (Sandbox Code Playgroud)
凡EventMessageScope.Public真的是EventMessageScope.Private | EventMessageScope.PublicOnly,它返回true.
当它不是,因为Private不公开,它只是一半公开.
同样适用于:
if(flag.Get(EventMessageScope.None))
哪个返回false,除了范围实际上是None(0x0),它应该总是返回true?
已知CF表示无符号执行,OF表示有符号溢出.那么汇编程序如何区分无符号和有符号数据,因为它只是一个位序列?(通过额外的存储器存储类型信息,或通过位置信息或其他?)这两个标志可以互换使用吗?
申请[Flags]真正做什么?
我知道它会改变行为Enum.ToString,但它会做什么吗?(例如,不同的编译器或运行时行为等)
编辑:是的,我知道它记录了枚举旨在用作按位标志的事实,并且将它应用于位标志更合乎逻辑.我更多地询问具体的行为变化,而不是一般的编程实践.
嗨,我需要删除Java中的标志.我有以下常量:
public final static int OPTION_A = 0x0001;
public final static int OPTION_B = 0x0002;
public final static int OPTION_C = 0x0004;
public final static int OPTION_D = 0x0008;
public final static int OPTION_E = 0x0010;
public final static int DEFAULT_OPTIONS =
OPTION_A | OPTION_B | OPTION_C | OPTION_D | OPTION_E;
Run Code Online (Sandbox Code Playgroud)
我想删除默认选项中的OPTION_E.为什么以下代码不正确?
// remove option E from defaul options:
int result = DEFATUL_OPTIONS;
result |= ~OPTION_E;
Run Code Online (Sandbox Code Playgroud) 我遇到了一个gcc v3.4.4的错误,并且在我的代码中添加#ifdef来解决该版本编译器的bug.
什么是GCC编译器预处理器预定义宏来检测编译器的版本号?