鉴于List
,是否有可能测试列表是否可增长?是否有可能测试飞镖列表是否可增长?
尝试设置length
和追赶的UnsupportedError
似乎是一个解决方案(虽然目前尚不清楚,如果你刚才设置的长度为相同的值会发生什么)。有更好的解决方案
鉴于List
,是否有可能测试列表是否可增长?是否有可能测试飞镖列表是否可增长?
尝试设置length
和追赶的UnsupportedError
似乎是一个解决方案(虽然目前尚不清楚,如果你刚才设置的长度为相同的值会发生什么)。有更好的解决方案
没有办法检测一个列表是可扩展的(短期使用反射来找到实现类型,这是脆弱的,不会在dart2js中以相同的方式工作,并增加代码大小)。
我们遇到的唯一有效的用例是当库返回一个列表时有检查/断言。在所有其他情况下,函数/库试图修改一个参数,而不知道是否允许这样做。
如果一个函数/库可以破坏性地工作,它应该需要一个布尔(或类似的),以便调用者可以决定它们的参数是否可以改变。被调用者不应该默默地修改它的输入,除非它很明显(例如fillFoo(list)
)或参数告诉它(例如computeSquares(list, inPlace: true)
)。
http://dartbug.com/13926仍然开放,但我预计它明天关闭状态为“NotPlanned”。
弗洛里安,感谢您的背景和解释。你的建议作为一个惯例是有意义的。 –
它可以使用反射(不是直接的)。
我想这不比捕捉异常更好。
print(MirrorSystem.getName(reflect(new List.from([0,1,2], growable: true))
.type.simpleName) == ('_GrowableList'));
编辑
这是不鼓励使用符号的名称 - 见Converting a Symbol into a String
我很惊讶地发现,在List中没有任何bug(打开或关闭)请求一个bool属性来检查它。 –
我刚刚添加了它:) https://code.google.com/p/dart/issues/detail?id=17469 –