草庐IT

Idiomatic

全部标签

Kotlin,针对 Java 互操作 : Idiomatic type for lazy collection?

当面向Java互操作时,惰性集合应该使用什么类型?Sequence对Kotlin调用者最有意义,因为它的扩展函数默认是惰性的,但强制Java调用者处理Kotlin标准库类型并手动转换序列迭代器(序列不扩展可迭代!)Iterable由于for循环中的隐式使用,对Java调用者来说是有意义的,但会导致毫无戒心的Kotlin调用者由于非惰性扩展函数而意外放弃惰性Stream最适合Java和Kotlin调用者,但可能有开销,并且是Java8+(Kotlin目标6+) 最佳答案 您可以通过实现所有这三个来让每个人都开心。例如:dataclas

Kotlin,针对 Java 互操作 : Idiomatic type for lazy collection?

当面向Java互操作时,惰性集合应该使用什么类型?Sequence对Kotlin调用者最有意义,因为它的扩展函数默认是惰性的,但强制Java调用者处理Kotlin标准库类型并手动转换序列迭代器(序列不扩展可迭代!)Iterable由于for循环中的隐式使用,对Java调用者来说是有意义的,但会导致毫无戒心的Kotlin调用者由于非惰性扩展函数而意外放弃惰性Stream最适合Java和Kotlin调用者,但可能有开销,并且是Java8+(Kotlin目标6+) 最佳答案 您可以通过实现所有这三个来让每个人都开心。例如:dataclas

c++ - 排序字符串 vector : plain C vs idiomatic C++11

我目前正在尝试学习C++11及其花哨的功能。具体来说,我正在寻找高效的通用性。所以我很高兴地用C++11编写了一个程序来对输入文件的行进行排序,以测试我的新技能。由于C++编译器的内联和很好的特性,我期望这个小例子有高性能。为了提示我的程序有多快,我使用qsort函数在C中破解了完全相同的程序,因为它是原始C没有对此函数执行内联,并且我的比较函数被调用间接访问,需要做两次间接访问char*表示字符串的指针。事实然而,我对结果感到非常惊讶,C似乎比C++快4倍。在8Mb文件上,我得到以下结果:$g++-O3-std=c++11-osortsort.C$time./sort/dev/nul

列出 : Idiomatic way of filtering similar elements

我正在寻找distinct的反义词.在带有["a","a","b","c","b","d"]的列表中,我只想保留"a"和"b"因为它们出现多次。解决方案如下:valsimilarsList=mutableListOf()list.filter{if(similars.contains(it))return@filtertruesimilars.add(it)false}.distinct()这将删除与之前已包含元素匹配的每个元素。在list对象中,所有多次出现的元素都将存储在filter之后。distinct在这种情况下会清除出现三次或更多次的元素。我正在寻找一种惯用的方式来做到这一点

ruby - EAFP 与 LBYL : Which is more idiomatic Ruby?

虽然我可以找到很多关于Python的“EAFP与LBYL”的资料,但我找不到任何关于Ruby的指南。我自己的经验是,Ruby至少和Python一样支持异常处理,但与整个社区相比,我自己的经验只是九牛一毛。那么,哪种范式更符合Ruby、EAFP或LBYL的习惯呢?此外,是否有任何重要的性能问题需要考虑? 最佳答案 Ruby社区对LBYL或EAFP没有总体偏好;它在不同的惯用情况下同时使用。Ruby社区实际上并不使用术语LBYL或EAFP;据我所知,它们仅在Python社区中使用。但是我们可以看看Ruby习语,看看它们如何符合这些术语。