ruby - 如何按条件排除未使用的案例

标签 ruby if-statement coding-style conditional-statements conventions

<分区>

哪个更好?

string.each_char do |letter|
    unless letter == " "
        if letters.has_key?(letter)
            letters[letter] = letters[letter].next
        else
            letters[letter] = 1
        end
    end
end

string.each_char do |letter|
    if letter == " "
    elsif letters.has_key?(letter)
        letters[letter] = letters[letter].next
    else
        letters[letter] = 1
    end
end

在没有主体的情况下留下 if 语句似乎很尴尬,但似乎也比使用 unless 更深入一步更好。

有一种更好的方法来编写这段代码。我不知道默认的哈希值,这会清理这段代码很多,但我仍然想知道哪个更好:没有主体的 if 语句,或 unless,或其他东西。

最佳答案

这可能是最好的:

letters = Hash.new(0)
string = "aaabbc"
string.each_char do |letter|
    if letter != " "
        letters[letter] += 1
    end
end
# => {"a"=>3, "b"=>2, "c"=>1}

为了在您的两个示例之间做出决定,我会避免添加额外的深度(更多缩进)。第二个也更容易阅读,因为跟随一串 if/else 语句很简单。与花哨的代码相比,可读性更强的代码几乎总是更可取。

关于ruby - 如何按条件排除未使用的案例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34835556/

相关文章:

java - 为什么 '//' 样式的多行注释不好(在 Java 中)?

ruby - 如何将 if..else block 的结果分配给变量?

css - Rails ERB 变量不响应 CSS

css - 使用 BoundField 在 GridView 上使用验证

python - 为什么 elif 在 if 语句之前运行? Python

c - 运算符 == 在 C 中不起作用

c - 该程序输出的解释(结构中的位域)

ruby-on-rails - 如何在 Rails 应用程序中删除 URL 的尾部斜杠? (在 SEO View 中)

ruby 不加载 Font Awesome

c# - HMC SHA1 哈希 - C# 生成与 Ruby 不同的哈希输出