Dart 如何在插值字符串中使用带算术的三元表达式?

Dart 如何在插值字符串中使用带算术的三元表达式?,dart,Dart,我有一个名为distance的双变量,单位是KM,如果它小于1km,我希望它以米为单位显示,并将距离乘以1000,将其转换为米,到目前为止,这是我提出的有效方法,但有更干净的方法吗 '${distance < 1 ? distance * 1000 : distance} ${distance < 1 ? 'm' : 'km'}' “${distance

我有一个名为distance的双变量,单位是KM,如果它小于1km,我希望它以米为单位显示,并将距离乘以1000,将其转换为米,到目前为止,这是我提出的有效方法,但有更干净的方法吗

'${distance < 1 ? distance * 1000 : distance} ${distance < 1 ? 'm' : 'km'}'
“${distance<1?distance*1000:distance}${distance<1?m':'km'}”
我试图把计算转换成一个三元表达式,但没有成功

'${distance < 1 ? distance * 1000 'm' : distance 'km'}'
“${距离<1?距离*1000'米:距离'km'}”

如果您的唯一目标是将其缩短为单个三元表达式(在本例中为条件运算符),则必须使用
距离
toString
方法,并将其与以下单位连接

“${distance<1?(distance*1000).toString()+'m':(distance.toString()+'km'}”

一个可能更好的解决方案是使用

(距离<1?”${distance*1000}m:“${distance}km”)

它不需要Irn建议的
toString

我建议指定“清洁剂”的含义。根据你上次的尝试,我假设你只想要一个三元表达式,就像我的答案一样成功,但这真的不清楚。说“cleaner”是主观的(例如,如果我想要更干净的代码,我根本不会使用三元表达式),这可能会导致这个基于观点的问题的结束。吹毛求疵:
/
运算符是条件运算符。Dart中的三元运算符比那一个多(三元运算符是一个接受三个操作数的运算符,就像二元运算符接受两个操作数一样)。例如,
[]=
运算符也是三元运算符。另一个。可能更容易阅读,选项是:
(距离<1?”${distance*1000}m:“${distance}km”)
@lrn您介意我偷了它并将其添加到我的答案中吗?一点也不介意。如果能给出更好的答案,所有使用都是公平的。:)