idioms相关内容

删除列表中连续重复元素的巧妙方法

我正在寻找一种干净、高尚的方式从下面的列表中剔除: li = [0, 1, 2, 3, 3, 4, 3, 2, 2, 2, 1, 0, 0] 所有连续的重复元素(超过一个数字),以获取: re = [0, 1, 2, 4, 3, 1] 但是,尽管我有可用的代码,但它给人的感觉不是毕达哥拉斯式的,而且我确信一定有解决办法(也许是一些不太为人所知的itertools函数?)以一种更 ..
发布时间:2022-06-11 12:14:43 Python

测试是否没有给出位置参数的惯用方法?

如果没有给出位置参数,在 Bash 中测试最惯用的方法是什么?有很多方法可以检查这一点,我想知道是否有一种首选方法. 一些方法是: ((! $# )) # 检查 $# 是否为 'not true'(($# == 0)) # $# 为 0[[!$@ ]] # $@ 未设置或为空 解决方案 对我来说,经典的方式是: [[ $# -eq 0 ]] ..

何时在 python 中使用 if vs elif

如果我有一个包含多个条件语句的函数,其中每个分支都被执行,则从函数返回.我应该使用多个 if 语句还是 if/elif/else?例如,假设我有一个函数: def 示例(x):如果 x >0:返回“积极"如果 x 这样写更好吗: def 示例(x):如果 x >0:返回“积极"elif x 两者都有相同的结果,但一个比另一个更有效或被认为更惯用? 编辑: 有几个人说过,在第 ..
发布时间:2022-01-20 23:31:23 Python

多个构造函数:Pythonic 方式?

我有一个保存数据的容器类.创建容器时,有不同的方法来传递数据. 传递一个包含数据的文件 直接通过参数传递数据 不传递数据;只需创建一个空容器 在 Java 中,我将创建三个构造函数.如果在 Python 中可行的话,它会是这样的: 类容器:def __init__(self):self.timestamp = 0自我数据 = []self.metadata = {}def __i ..
发布时间:2022-01-18 23:52:58 Python

使用哈希参数进行 DRY Ruby 初始化

我发现自己在构造函数中使用了很多哈希参数,尤其是在为最终用户将接触到的配置或其他 API 位编写 DSL 时.我最终做的事情如下: 类示例属性 = [:name, :age]PROPERTIES.each { |p|attr_reader p }定义初始化(参数)PROPERTIES.each 做 |p|self.instance_variable_set "@#{p}", args[p] 如果 ..
发布时间:2022-01-18 23:25:48 其他开发

在事件声明中添加匿名空委托有缺点吗?

我看到有人提到过这个成语(包括关于 SO): //故意清空订阅者公共事件 EventHandler AskQuestion = 委托 {}; 好处很明显 - 它避免了在引发事件之前检查 null 的需要. 但是,我很想知道是否有任何缺点.例如,它是否被广泛使用并且足够透明以至于不会引起维护问题?空事件订阅者调用是否有任何明显的性能影响? 解决方案 唯一的缺点是非常轻微的性能损失, ..
发布时间:2022-01-18 11:52:07 C#/.NET

“零或零"的最佳 ruby​​ 成语

我正在寻找一种简洁的方法来检查一个值是零还是零.目前我正在做类似的事情: if (!val || val == 0)# 为零或零结尾 但这看起来很笨拙. 解决方案 对象有一个 nil? 方法. 如果val.nil?||价值 == 0[做一点事]结尾 或者,仅针对一条指令: [do something] 如果 val.nil?||价值 == 0 ..
发布时间:2022-01-06 23:15:53 其他开发

F# 函数的多个退出

我可以在 C++ 中轻松做到这一点(注意:我没有测试它的正确性——这只是为了说明我想要做什么): const int BadParam = -1;const int 成功 = 0;int MyFunc(int 参数){如果(参数 但我不知道如何在 F# 早期退出例程.我想要做的是在输入错误时退出函数,但如果输入正常则继续.我是不是遗漏了 F# 的一些基本属性,还是因为我只是在学习 FP,所以 ..
发布时间:2022-01-05 10:19:10 其他开发

为什么 Clojure 习语更喜欢返回 nil 而不是像 Scheme 那样的空列表?

来自对另一个问题的评论,有人说 Clojure 习惯用法更喜欢返回 nil 而不是像 Scheme 中的空列表.这是为什么? 喜欢 (when (seq lat) ...) 代替 (if (empty? lat)'() ...) 解决方案 我能想到几个原因: 逻辑区别.在 Clojure 中,nil 意味着没有/没有价值.而 '() "空列表是一个值 - 它恰好是一个空列表 ..
发布时间:2022-01-02 23:10:12 其他开发

交换向量中两个元素的惯用方法是什么

是否有更好或更简洁的方法来执行以下操作? (defn 交换 [v i1 i2]“交换向量中的两个位置"(让 [e1 (v i1)e2 (v i2)](-> (assoc v i1 e2)(assoc i2 e1)))) 解决方案 我也想不出特别优雅的解决方案.不过我是这样写的: (defn 交换 [v i1 i2](assoc v i2 (v i1) i1 (v i2))) ..
发布时间:2022-01-02 23:06:20 其他开发

Python 习语“if __name__ == '__main__'"的clojure 等价物是什么?

我正在涉足 clojure,并且在尝试确定与这个常见的 Python 习语等效的 clojure(和/或 Lisp)时遇到了一些麻烦. 习惯用法是在python模块的底部经常有一些测试代码,然后是运行代码的语句,例如: # mymodule.py类我的类(对象):"""库的主要逻辑/代码在这里"""经过def _runTests():# 测试 MyClass 各个方面的代码...mc = ..
发布时间:2022-01-02 22:31:09 Python

如何使用 C++ 中的非虚拟接口习语来实现接口类?

在 C++ 中,接口可以由其方法是纯虚拟的类来实现. 这样的类可以是库的一部分,用于描述对象应该实现哪些方法才能与库中的其他类一起工作: class Lib::IFoo{上市:虚空方法()= 0;}; : class Lib::Bar{上市:无效的东西(Lib::IFoo &);}; 现在我想使用类Lib::Bar,所以我必须实现IFoo接口. 出于我的目的,我需要一整套相关的 ..
发布时间:2021-12-31 14:55:30 C/C++开发

避免繁琐的可选参数

如果我有一个带有 2 个必需参数和 4 个可选参数的构造函数,我怎样才能避免编写 16 个构造函数,甚至 10 个左右的构造函数,如果我使用默认参数(我不喜欢)因为它的自我文档很差)?是否有任何使用模板的习语或方法可以使我不那么乏味?(而且更容易维护?) 解决方案 您可能对 命名参数习语. 总而言之,创建一个类来保存要传递给构造函数的值.添加一个方法来设置每个值,并让每个方法在最后执 ..
发布时间:2021-12-30 15:16:14 C/C++开发

用于特殊外壳最后一个元素的最佳循环习语

在进行简单的文本处理和打印语句时,我多次遇到这种情况,在这些语句中我循环遍历一个集合,并且我想对最后一个元素进行特殊处理(例如,除了最后一个元素之外,每个普通元素都将用逗号分隔案例). 是否有一些最佳实践习惯用法或优雅的形式,不需要重复代码或在 if, else 循环中推入. 例如,我有一个字符串列表,我想在逗号分隔列表中打印这些字符串.(do while 解决方案已经假设列表有 2 ..
发布时间:2021-12-26 18:15:56 Java开发

Swift 惯用的错误检查

假设你有一个这样的函数: func getSomething(error: NSErrorPointer) ->某物 并且您通常以这种方式使用它: var 错误:NSError?= 零让 a = getSomething(&error) 这里检查错误的惯用方法是什么?更具体的问题: 如果 error == nil 我们可以假设 a 永远不会为零,反之亦然反之? 我们应该首先检查什么 ..
发布时间:2021-12-26 13:02:46 移动开发

何时使用 std::size_t?

我只是想知道我应该使用 std::size_t 代替 int 来代替循环和其他东西吗?例如: #include int main(){for (std::size_t i = 0; i 一般来说,关于何时使用 std::size_t 的最佳实践是什么? 解决方案 一个好的经验法则是,对于任何你需要在循环条件中与自然是 std::size_t 本身. std::size_t 是任 ..
发布时间:2021-12-25 13:03:44 C/C++开发