标签: curly-braces

重新格式化C++括号而不改变缩进?

我们希望使我们的C++大括号样式更加一致.现在,我们的代码包含以下内容:

if (cond)
{
    // ...    
}
else
{
    // ...
}
Run Code Online (Sandbox Code Playgroud)

...和:

if (cond) {
    // ...
} else {
    // ...
}
Run Code Online (Sandbox Code Playgroud)

我们想要专门使用后一种风格.

但是,我们希望改变我们的代码的缩进.我尝试过使用astyle,bcpp,GNU indent和Uncrustify(我看过GreatCode的命令行选项).不幸的是,这些工具中的每一个都坚持重新定义我们的代码,并且大多数工具都非常糟糕地破坏了C++构造函数初始化程序列表和预处理程序宏.

是否有任何C++代码美化器可以修复大括号而只留下缩进?它不一定是一个预先存在的工具 - 如果你知道如何使用一些疯狂的Perl单线程,这也很好.谢谢!

更新:是的,我们知道这将使得难以读取旧代码的差异.这是一个长期推迟的代码清理,我们已经确定一致格式化的日常优势超过任何版本控制困难.

c++ formatting coding-style indentation curly-braces

6
推荐指数
1
解决办法
1444
查看次数

为什么Java数组声明使用大括号?

我想知道为什么Java数组声明使用大括号而不是标准括号.如图所示.我想这可能需要进一步了解大括号,但这具体到我的议程上.

Object[] tableHeaders = {"Cars","Trucks","Tacos"};
Run Code Online (Sandbox Code Playgroud)

这是正确的,而不是.

Object[] tableHeaders = ("Cars","Trucks","Tacos");
Run Code Online (Sandbox Code Playgroud)

java arrays declaration curly-braces

6
推荐指数
2
解决办法
1万
查看次数

带花括号的String.Format

我们的低级日志记录库必须处理发送给它的各种日志消息.

其中一些消息包括花括号(作为文本的一部分),有些包含使用String.Format格式化为字符串一部分的参数

例如,此字符串可以是Logger类的输入:

"参数:{Hostname}值:{0}"使用发送的正确变量用于格式化程序.

为了正确地做到这一点,我必须逃避不属于格式化的花括号(通过将它们加倍).

我想过用Regex做这件事,但是这并不像看起来那么简单,因为我不知道如何在花括号内部匹配这些字符串(String.Format未用于格式化目的).

另一个问题是Logger类应尽可能提高性能,开始处理正则表达式,因为其操作的一部分可能会妨碍性能.

有没有适当的和已知的最佳做法?

c# string string-formatting curly-braces

6
推荐指数
1
解决办法
4008
查看次数

PHP:$ variable {0}中的花括号有什么作用?

我正在经历一个代码库,遇到了一个我有疑问的问题.这是我以前从未见过的东西,我想知道是否有人可以为我解释.这是代码:

$variableName = $array[1];
$variableName{0} = strtolower($variableName{0});
$this->property = $variableName;
Run Code Online (Sandbox Code Playgroud)

用于什么花括号?我以前用花括号将变量定义为变量名,但这是一回事吗?我似乎无法在网上找到解释它的任何资源,但我不确定我是否正在寻找合适的东西.

php variables curly-braces

6
推荐指数
1
解决办法
1168
查看次数

在Haskell中使用花括号是什么意思?

下面的代码

getSpareBuffer :: Handle__ -> IO (BufferMode, CharBuffer)
getSpareBuffer Handle__{haCharBuffer=ref, 
                    haBuffers=spare_ref,
                    haBufferMode=mode}
 = do
case mode of
 NoBuffering -> return (mode, error "no buffer!")
 _ -> do
      bufs <- readIORef spare_ref
      buf  <- readIORef ref
      case bufs of
        BufferListCons b rest -> do
            writeIORef spare_ref rest
            return ( mode, emptyBuffer b (bufSize buf) WriteBuffer)
        BufferListNil -> do
            new_buf <- newCharBuffer (bufSize buf) WriteBuffer
            return (mode, new_buf)
Run Code Online (Sandbox Code Playgroud)

来自GHC源代码.我想知道为什么这段代码的作者在参数的位置使用花括号.以及变量haCharBuffer,haBuffers,haBufferMode如何从ref,spare_ref和mode中获取值.这些值尚未定义.代码文件是ghc-7.4.1\libraries\base\GHC\IO\Handle\Text.hs

GHC代码的另一部分代码需要澄清:

flushByteWriteBuffer :: Handle__ -> IO ()
flushByteWriteBuffer h_@Handle__{..} = do
  bbuf <- …
Run Code Online (Sandbox Code Playgroud)

haskell curly-braces curly-brackets

6
推荐指数
2
解决办法
6334
查看次数

SVG水平卷曲支架

我试图创建一个宽的水平花括号从键盘字符开始并转换它.

我开始时:

<text x="40" y="120" transform="rotate(90, 40, 120)">}</text>
Run Code Online (Sandbox Code Playgroud)

现在我想扩展文本以使其更宽.忘记使用CSS font-size元素,font-weight的大小也会相应地改变,产生一个胖符号.

我想通过保持它变薄来拉伸角色.

然后我开始使用symboluse组合,尝试利用该viewbox功能

这是我上次尝试的内容:

<symbol id="curly-bracket">
    <text>}</text>
</symbol>
<use x="40" y="120" transform="rotate(90, 40, 120)" xlink:href="#curly-bracket" />
Run Code Online (Sandbox Code Playgroud)

角色现在看起来很切,我发现无法正确显示.

我很难理解我在做什么,阅读W3 SVG文档.

svg curly-braces

6
推荐指数
1
解决办法
3414
查看次数

什么是JSDoc @type花括号?

JSDoc @type标记允许指定变量类型,例如/** @type {Number} */.然而,我也看到/** @type Number */没有花括号,它似乎同样有效.

使用JSDoc有一个带有和不带花括号的例子,但没有讨论它们的区别.在谷歌关闭编译文档意味着所有声明必须有大括号,但并没有规定他们不这样做会发生什么.

花括号重要吗?如果是这样,为什么?如果没有,我应该使用它们吗?

javascript syntax curly-braces jsdoc

6
推荐指数
1
解决办法
541
查看次数

为什么bash4以不同的方式扩展花括号?

其中一个遗留系统升级到bash4,其大部分脚本停止工作.我已经将它缩小到如何在a中扩展花括号<(cmdA ...|cmdB ... file{1,2}|cmdZ ...).

为了更好地说明差异:

之前(bash 3.2.25):

[root@host1:~]$ bash -version|head -1
GNU bash, version 3.2.25(1)-release (x86_64-redhat-linux-gnu)
[root@host1:~]$ cat <(echo sort file{1,2})
sort file1
sort file2
[root@host1:~]$ join <(sed 's/\r//g;s/^[^:]*://' file{1,2}|LANG=C sort)
[root@host1:~]$
Run Code Online (Sandbox Code Playgroud)

之后(bash 4.1.2):

[root@host2:~]$ bash --version|head -1
GNU bash, version 4.1.2(1)-release (x86_64-redhat-linux-gnu)
[root@host2:~]$ cat <(echo sort file{1,2})
sort file1 file2
[root@host2:~]$ join <(sed 's/\r//g;s/^[^:]*://' file{1,2}|LANG=C sort)
join: missing operand after `/dev/fd/63'
Try `join --help' for more information.
[root@host2:~]$ 
Run Code Online (Sandbox Code Playgroud)

它是否为bash4做出了"硬编码"(并且预期?)的更改?或者这个扩展的行为是由一些bash级别的设置(比如set -B/ set +B)控制的,可以切换回old/legacy/bash3模式吗?我宁愿改变一些shell范围的开关(而不是重写一堆脚本).

如果这个(bash3)"功能"在错误修复或改进期间被切断 …

bash shell rhel curly-braces expansion

6
推荐指数
1
解决办法
144
查看次数

clang-format 可以强制支持所有控制语句体吗?

IE浏览器,这个:

if (x > 5)
  return test;
Run Code Online (Sandbox Code Playgroud)

总是会变成:

if (x > 5)
{
  return test;
}
Run Code Online (Sandbox Code Playgroud)

我不是在谈论大括号样式(Allman、GNU、Whiteman 等),我只是说完全有大括号。

有一些东西可以防止/启用单行控制语句,例如:

if (x > 5) return test;

这是AllowShortBlocksOnASingleLine,但这不是我在这里寻找的东西。

如果它适用于 clang 7 那是理想的,但如果不是让我知道。

curly-braces braces clang-format

6
推荐指数
2
解决办法
1007
查看次数

如果使用 {},函数调用不会产生歧义

#include <stdio.h>
#include <vector>
#include <deque>

// 1st function
void f(int i, int j = 10){
    printf("Hello World what");
};

void f(std::vector<int>){
    printf("Hello World vec");
};

void f(std::deque<int>){
    printf("Hello World deq");
};

int main()
{
    f({});
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

如果第一个函数被注释掉,我会ambiguous call在编译时得到。如果没有注释掉,则调用第一个函数。为什么{}隐式转换为int?

实例:https : //onlinegdb.com/rkhR0NiBD

c++ initialization curly-braces list-initialization c++17

6
推荐指数
2
解决办法
77
查看次数