gpt4 book ai didi

dart - 为什么 “” .leftPad(0)产生与 “” .leftPad(1)相同的结果?

转载 作者:行者123 更新时间:2023-12-03 03:17:25 26 4
gpt4 key购买 nike

给出以下代码:

  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)的结果相同。我可以使用零的缩进测试来解决。但是,我相信这是一个编译器错误。

最佳答案

这是您的问题:

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: ' '

关于dart - 为什么 “” .leftPad(0)产生与 “” .leftPad(1)相同的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54485390/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com