我有一个方法来计算项目相对于另外两个引用的位置距离,这两个引用都有纬度和经度。因此,我们有三个参考点:用户家庭地址、用户当前地址和项目地址。项目地址: lat1,long1;用户家庭地址: lat2,long2用户离GPS的当前位置: lat3,long3我有一个计算距离的方法,有四个参数
calculateDistance(latA, longB, lat1, long1){//NOTE - lat1 and long1 must be provided from the db but latA and longB will be either of lat2 and long2 or lat2 and long2 OR default 0.12323 and 12.2343
}我必须遍历lat1、long1、lat2、long2,以检查以下内容:如果lat1和long1或lat2和long2为null或空,则使用default;如果lat1和long1为null/空且lat2和long2不为null/not空,则使用lat2和long2;如果lat1和long1不为null/not空且lat2和long2为null/is空,则使用lat1和。计算并将计算值传递给calculateDistance的最简单表达式是什么?Dart中的十进制和空值检查表达式是否有帮助,以及如何编写它们?请用Dart分享您的想法和表达。
发布于 2020-09-05 02:04:30
这就是你要的
CalculateDistance(
lat1,
long1,
lat3??lat2??0.12323,
long3??long2??12.2343);或者,您可以在传递给函数之前简单地检查它。如果它不工作,则为COmment
编辑后,现在它认为lat1和lat2不为null,如果2和3都为null,则给出默认值,如果3为null,则给出2
发布于 2020-09-05 03:33:45
请澄清这4个参数是字符串还是双精度。如果它们是双精度的,那么你说的空是指0.0作为值吗?你的情况也不是很清楚...它们应该是:
(lat1,long1) 和 (lat2,long2)为null/空-使用默认值
(lat1,long1) - null/empty和(lat2,long2) - not null/empty -使用(lat2,long2)
(lat1,long1) - not null/empty AND (lat2,long2) -null/空- use (lat1,long1)
(lat1,long1) - not null/empty和(lat2,long2) - not null/empty -然后呢??使用(lat1,long1)??
我排除了lat1具有有效值,但long1为null的可能性。lat1和long1都将为null/empty,或者两者都有值。
基于此,您可以使用简单的if/else,也可以在表达式中使用如下形式...
lat1!=null ? calculateDistance(lat1, long1, latDB, longDB): lat2!=null? calculateDistance(lat2, long2, latDB, longDB): calculateDistance(0.12323, 12.2343, latDB, longDB);在这里,我考虑到如果lat1和long1都不为空,则需要使用lat1和lat2。
然而,这样的表达式会导致代码缺乏可读性,并且没有性能提升。因此,声明一个单独的函数会更好,在这个函数中可以清楚地显示if/else语句。将值传递给它,并在其中调用calculateDistance()方法。
https://stackoverflow.com/questions/63745555
复制相似问题