给定以下代码:
String indentation = "";
List < int > indents = [ 0, 1, 2, 4, 6, 8 ];
int length = 0;
for ( int i = 0; ( i <= 8 ); i++ )
{
if ( indents.contains ( i ) )
{
indentation = " ".padLeft(i);
length = indentation.length;
print ( "indent: $i length: $length indentation: '$indentation'");
}
}我得到了以下结果:
indent: 0 length: 1 indentation: ' '
indent: 1 length: 1 indentation: ' '
indent: 2 length: 2 indentation: ' '
indent: 4 length: 4 indentation: ' '
indent: 6 length: 6 indentation: ' '
indent: 8 length: 8 indentation: ' '我不认为"".leftPad (0 )的结果应该与"".leftPad (1)的结果相同。我可以使用测试缩进为零的变通方法。但是,我认为这是一个编译器错误。
发布于 2019-02-02 02:45:00
这就是你的问题:
indentation = " ".padLeft(i);padLeft确保字符串开头至少有一定数量的空格,并且只有在必要时才会添加更多空格。因为您是在单个空格(" ")的字符串上调用它,所以padLeft(1)将看到在字符串的开头确实有一个空格,并将认为它的工作已经完成。因此,padLeft(0)和padLeft(1)将完成相同数量的工作-根本不做任何工作。
将" "更改为""会产生预期的结果:
indent: 0 length: 0 indentation: ''
indent: 1 length: 1 indentation: ' '
indent: 2 length: 2 indentation: ' '
indent: 4 length: 4 indentation: ' '
indent: 6 length: 6 indentation: ' '
indent: 8 length: 8 indentation: ' 'https://stackoverflow.com/questions/54485390
复制相似问题