【问题标题】:Why there are some many ways to create Strings in Ruby? [closed]为什么有很多方法可以在 Ruby 中创建字符串? [关闭]
【发布时间】:2012-02-08 03:33:50
【问题描述】:

我已经看过这个Why are there so many slightly different ways to do the same thing in Ruby?,但它没有一点帮助。恕我直言,对同一事物具有多个略有不同的语义和语法会令人困惑且适得其反。我试图找到一些规范或理由来说明为什么会这样,但找不到它们(与 Java 和 Python 不同,Java 和 Python 中的每个语言特性都有很好的文档记录和动机等)。

不仅仅是字符串,它是一切。我正在寻找的是一个通用的解释,解释为什么日本人认为有 100 种方法来做同样的事情比一种明确的方法更好。请记住,我们谈论的是编程语言,它不是乐器或画笔,它是完成工作并在此过程中获得乐趣的工具。阅读一些代码并想知道她为什么使用%<hello kitty> 而不是"hello kitty" 并不有趣,尤其是在您寻找错误时。

我看到了标准化的好处,这是一个相关的概念。我希望其他人都这样做。为什么 Ruby 不支持大约 100 个版本的自定义 HTTP 协议,因为它们支持 100 种创建字符串的方式?

【问题讨论】:

  • 别担心,这不是 Perl ;-) 无论如何,“这就是语言的样子”。邮件列表也许更适合这个问题,但这里是 OT,因为除了我给出的答案之外,没有其他“明确”的答案。

标签: ruby programming-languages


【解决方案1】:

创建字符串的方法有很多种,原因是您可能需要一个字符串。由于字符串是许多应用程序的支柱,因此该工具强大且多样是有道理的。

一旦您习惯了它,您会发现其他语言中死板的报价系统比任何东西都更令人讨厌。 HTML 通常需要同时使用单 ' 和双 " 引号来嵌入 JavaScript 或其他属性,除非您想通过在其中任何一个之前添加反斜杠 \ 将字符串呈现为不可读的纸浆,否则您会更好使用%q[ ... ] 类型的引用方法。

任何好的工具箱都有各种各样的工具。不要抱怨您的扳手套装令人困惑,因为它有很多不同尺寸的扳手。有时你需要一个特定的,然后你会心存感激。其中许多方法都是从 Perl 等语言中借用的,而 Perl 的灵感来自 bash 等其他语言。

典型用例:

double_quotes = "typical use case with #{variables}"
single_quotes = 'strict string literals'
alternate_double_quotes = %Q[<for html="tags('with both quotes', 'and #{variables}')">]
alternate_single_quotes = %q[<for html="tags('with both quotes')">]
inline_string = <<END
Useful for long blocks of freeform
text such as sample data or templates.
END

我发现%q[ ... ] 方法在尝试表达包含引号的多行字符串时会派上用场,这在 SQL 中很常见:

execute(%q[
  INSERT INTO examples (id, feature_code)
    SELECT id, CONCAT('example_', feature_code)
      FROM things
      GROUP BY foo
      ORDER BY bar
])

发现[ ... ] 配对相对容易,但当您有许多转义引号时就不太容易了。除非您有语法高亮编辑器,否则很容易错过结束引号。

【讨论】:

    猜你喜欢
    • 2011-02-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-09
    • 2015-11-16
    • 2020-09-24
    • 2017-09-03
    • 1970-01-01
    • 2011-09-26
    相关资源
    最近更新 更多