找到两个数字中较大/较小的最聪明的方法是什么
What is the smartest way to find the larger / smaller of two numbers
寻找最聪明、最有效和可读的方法来执行以下操作:
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 没有内联或宏。
有名单:
var nums = [51,4,6,8];
nums.sort();
in largest = nums.last
或者(谢谢 Günter 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)内联,这对 reader 来说是最不令人惊讶的。对于自定义实现,reader 必须调查函数以确定它的作用。
对于值的集合,我发现这是最优雅的方式
来自
import 'dart:math';
main(){
print([1,2,8,6].reduce(max)); // 8
print([1,2,8,6].reduce(min)); // 1
}
为了得到 min/max 重新排序列表是非常低效的
var nums = [51,4,6,8];
nums.sort();
in largest = nums.last
寻找最聪明、最有效和可读的方法来执行以下操作:
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 没有内联或宏。
有名单:
var nums = [51,4,6,8];
nums.sort();
in largest = nums.last
或者(谢谢 Günter 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)内联,这对 reader 来说是最不令人惊讶的。对于自定义实现,reader 必须调查函数以确定它的作用。
对于值的集合,我发现这是最优雅的方式
来自
import 'dart:math';
main(){
print([1,2,8,6].reduce(max)); // 8
print([1,2,8,6].reduce(min)); // 1
}
为了得到 min/max 重新排序列表是非常低效的
var nums = [51,4,6,8];
nums.sort();
in largest = nums.last