Dart “为什么?”&引用;。leftPad(0)产生与“0”相同的结果&引用;。左键盘(1)?
给定以下代码:Dart “为什么?”&引用;。leftPad(0)产生与“0”相同的结果&引用;。左键盘(1)?,dart,Dart,给定以下代码: 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);
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'");
}
}
我不认为“.leftPad(0)的结果应该与“.leftPad(1)的结果相同。我可以使用测试零缩进的变通方法。但是,我认为这是一个编译器错误。这是您的问题:
indentation = " ".padLeft(i);
padLeft
确保字符串开头至少有一定数量的空格,并且仅在必要时添加更多空格。因为你在一个字符串中调用它,它是一个单一的空间(<代码>”/代码>,<代码> pDeLead(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: ' '
如果代码产生的结果与您的信念不同,您相信什么并不重要。您可以在这里抱怨dart的行为:
“”。padLeft(i)
与“”不同。leftPad(0)
@RobertHarvey这不是基于意见的答案。问题是代码中的一个bug导致它做了OP期望之外的事情。@Abion47:看起来你还没有完全阅读他的问题。读最后一句话。
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: ' '