草庐IT

something_else

全部标签

kotlin - 使用 "when"而不是 "if-else"有任何性能成本吗?

在开发过程中,我发现与if-else相比,使用when很多时候看起来更好。所以,我很好奇在简单情况下使用when而不是典型的if-else是否会对性能产生影响(即使它很小)。一个例子是:valsomeNumber=when(someObject){null->0else->someCalculation()}对valsomeNumber=if(someObject==null){0}else{someCalculation()}两者之间有性能差异吗? 最佳答案 tl;dr:不,您不应该期望when会减慢任何速度。编译器重用if/el

java-8 - 如何将 java.util.Optional<Something> 映射到某物?在 Kotlin

我有一个返回java.util.Optional的方法.我想使用Kotlin的那个方法,我希望我的结果是Something?,而不是Optional如何在Kotlin中以惯用的方式做到这一点?调用.orElse(null)在Optional给我Something?确实,但看起来不太好。如果我写valmsg:Something=optional.orElse(null).,Kotlin不会提示(msg被声明为Something,而不是Something?-我松散了编译类型检查)。我使用Kotlin1.0.3 最佳答案 用解包方法扩展j

java - 如何将 java.util.stream.Stream<Something> 转换为 kotlin.Sequence<Something>

Java8Streams功能强大,但当不需要并行性时,Kotlin序列似乎更易于使用。有没有办法将stream.sequencial()转换为序列? 最佳答案 您可以从流中获取迭代器,然后将迭代器包装成Sequence:Sequence{stream.iterator()}UPD:从Kotlin1.1开始,您可以使用Stream.asSequence()扩展(参见MichaelRichardson'sanswer),其作用与上述完全相同。该扩展也可用于专用流:IntStream、LongStream和DoubleStream。它位于

android - Kotlin 和惯用的编写方式, 'if not null, else...' 基于可变值

假设我们有这样的代码:classQuickExample{funfunction(argument:SomeOtherClass){if(argument.mutableProperty!=null){doSomething(argument.mutableProperty)}else{doOtherThing()}}fundoSomething(argument:Object){}fundoOtherThing(){}}classSomeOtherClass{varmutableProperty:Object?=null}与在Java中不同的是,在Java中,您可能会独自担心在运行时

PHP:$this->something->($this->foo)->bar 合法吗?

这行PHP合法吗?$this->mongo->($this->db)->$collection_name->insert($document_name);如果$this->db是一个带有要使用的db名称的常量。谢谢 最佳答案 尝试使用花括号代替括号:$this->mongo->{$this->db}->$collection_name->insert($document_name);或者将$this->db分配给本地变量并使用它来代替:$db_name=$this->db;$this->mongo->$db_name->$colle

c++ - "if if"与 "if else if"的性能差异

我只是在想C/C++中的2个语句之间是否存在性能差异:案例一:if(p==0)do_this();elseif(p==1)do_that();elseif(p==2)do_these():案例2:if(p==0)do_this();if(p==1)do_that();if(p==2)do_these(); 最佳答案 假设简单类型(在这种情况下,我使用了int)并且没有有趣的事情(没有为int重新定义operator=),至少与AMD64上的GCC4.6没有区别。生成的代码是一样的:0000000000000000:000000000

c# - 我应该使用 return/continue 语句而不是 if-else 吗?

在C、C++和C#中,当在函数或循环语句中使用条件时,可以尽早使用continue或return语句并摆脱if-else语句的else分支。例如:while(loopCondition){if(innerCondition){//dosomestuff}else{//dootherstuff}}变成while(loopCondition){if(innerCondition){//dosomestuffcontinue;}//dootherstuff}和voidfunction(){if(condition){//dosomestuff}else{//dootherstuff}}变成v

c++ - 我需要把 constexpr 放在 else-if 之后吗?

灵感来自thisanswer,我尝试复制并粘贴(并在main()中添加测试)此代码:templatestd::tuplefoo(Ta){ifconstexpr(std::is_same_v)return{a,0.0};elseif(std::is_same_v)return{0,a};elsereturn{0,0.0};}intmain(){auto[x,y]=foo("");std::cout这很简单-如果T推导出为int,我们要返回一个元组[a,0.0].如果T推导出为double,我们要返回一个元组[0,a].否则,我们要返回[0,0.0].如您所见,在main()函数,我正在调

python - C++ 中是否有相当于 "for ... else"Python 循环的方法?

Python有一个有趣的for语句,可让您指定else子句。在这样的结构中:foriinfoo:ifbar(i):breakelse:baz()else子句在for之后执行,但前提是for正常终止(不是通过break)。我想知道C++中是否有等价物?我可以使用for...else吗? 最佳答案 如果不介意使用goto也可以通过以下方式完成。这节省了额外的if检查和更高范围的变量声明。for(inti=0;i 关于python-C++中是否有相当于"for...else"Python循环的

c++ - 为什么切换/Case 而不是 If/Else If?

这个问题主要针对C/C++,但我猜其他语言也有关系。我不明白为什么仍然使用switch/case而不是if/elseif。在我看来,这很像使用goto,并导致相同类型的困惑代码,而使用if/elseif可以以更有条理的方式实现相同的结果。不过,我还是经常看到这些街区。找到它们的常见位置是在消息循环(WndProc...)附近,而这些是它们引发最严重破坏的地方之一:变量在整个block中共享,即使不合适(并且不能在里面初始化)。必须特别注意不要放弃休息,等等......就我个人而言,我避免使用它们,我想知道我是否遗漏了什么?它们是否比if/else更有效?它们是按照传统进行的吗?