gpt4 book ai didi

dart - 找到两个数字中较大/较小的最聪明的方法是什么

转载 作者:行者123 更新时间:2023-12-03 02:39:22 29 4
gpt4 key购买 nike

寻找最聪明、最有效和最易读的方法来执行以下操作:

int one = 1, two = 2;
int larger = one < two?two:one;

我更喜欢(或以下的可变参数版本):
int largest(one,two){return one<two?two:one;}
int larger = largest(one,two);

但是 dart 没有内联或宏。

带 list :
var nums = [51,4,6,8];
nums.sort();
in largest = nums.last

或者(谢谢你,君特 Zöchbauer):
print([1,2,8,6].reduce(max));

使用数学库:
import 'dart:math';
int largest = max(21,56);

可能是最好的,但与第一种方法相比,max 的效率如何?

为什么这样问?
使用第一种方法时,我必须检查对它们中的每一个进行比较是否正确;有时会进行数百次比较。有了第二个,只需要验证一个函数,却有数百个函数调用。

最佳答案

我很确定只是

import 'dart:math';
int largest = max(21,56);

是最好的方法。它足够小,可以被编译器(dart2js、VM)内联,这对读者来说是最不奇怪的。对于自定义实现,读者必须研究该函数以确定它的作用。

对于值的集合,我发现这是最优雅的方式

来自 https://stackoverflow.com/a/20490970/217408
import 'dart:math';

main(){
print([1,2,8,6].reduce(max)); // 8
print([1,2,8,6].reduce(min)); // 1
}

重新排序列表只是为了获得最小值/最大值是非常低效的
var nums = [51,4,6,8];
nums.sort();
in largest = nums.last

关于dart - 找到两个数字中较大/较小的最聪明的方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34917599/

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