寻找最聪明、最有效和最易读的方法来执行以下操作:
int one = 1, two = 2;
int larger = one < two?two:one;
Run Code Online (Sandbox Code Playgroud)
我更喜欢(或以下的可变参数版本):
int largest(one,two){return one<two?two:one;}
int larger = largest(one,two);
Run Code Online (Sandbox Code Playgroud)
但是 dart 没有内联或宏。
带清单:
var nums = [51,4,6,8];
nums.sort();
in largest = nums.last
Run Code Online (Sandbox Code Playgroud)
或者(谢谢你,君特 Zöchbauer):
print([1,2,8,6].reduce(max));
Run Code Online (Sandbox Code Playgroud)
使用数学库:
import 'dart:math';
int largest = max(21,56);
Run Code Online (Sandbox Code Playgroud)
可能是最好的,但与第一种方法相比,max 的效率如何?
为什么这样问?
使用第一种方法时,我必须检查对它们中的每一个进行比较是否正确;有时会进行数百次比较。有了第二个,只需要验证一个函数,却有数百个函数调用。
Gün*_*uer 17
我很确定只是
import 'dart:math';
int largest = max(21,56);
Run Code Online (Sandbox Code Playgroud)
是最好的方法。它足够小,可以被编译器(dart2js、VM)内联,这对读者来说是最不奇怪的。对于自定义实现,读者必须研究该函数以确定它的作用。
对于值的集合,我发现这是最优雅的方式
import 'dart:math';
main(){
print([1,2,8,6].reduce(max)); // 8
print([1,2,8,6].reduce(min)); // 1
}
Run Code Online (Sandbox Code Playgroud)
重新排序列表只是为了获得最小值/最大值是非常低效的
var nums = [51,4,6,8];
nums.sort();
in largest = nums.last
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4778 次 |
最近记录: |