为什么在Ruby中有许多创建字符串的方法?

为什么在Ruby中有许多创建字符串的方法?,ruby,programming-languages,Ruby,Programming Languages,我已经看过这个了,但是一点用都没有。对于同一件事,有多个稍有不同的语义和语法是令人困惑和适得其反的。我曾试图找到一些规范,或者解释为什么会出现这种情况的基本原理,但却找不到它们(不像Java和Python,Java和Python中的每一种语言特性都有很好的文档记录和动机等) 不仅仅是绳子,还有一切。我要找的是一个一般性的解释,为什么日本人认为有100种方法做同样的事情比一种明确的方法要好。请记住,我们谈论的是编程语言,它不是乐器,也不是画笔,它是完成工作并在过程中享受乐趣的工具。阅读一些代码并想

我已经看过这个了,但是一点用都没有。对于同一件事,有多个稍有不同的语义和语法是令人困惑和适得其反的。我曾试图找到一些规范,或者解释为什么会出现这种情况的基本原理,但却找不到它们(不像Java和Python,Java和Python中的每一种语言特性都有很好的文档记录和动机等)

不仅仅是绳子,还有一切。我要找的是一个一般性的解释,为什么日本人认为有100种方法做同样的事情比一种明确的方法要好。请记住,我们谈论的是编程语言,它不是乐器,也不是画笔,它是完成工作并在过程中享受乐趣的工具。阅读一些代码并想知道她为什么用
%
而不是
“hello kitty”
是不好玩的,尤其是当你在寻找bug的时候


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

创建字符串的方法有很多种,原因是您可能需要字符串。由于字符串是许多应用程序的主干,因此该功能是健壮和多样的是有意义的

一旦你习惯了,你会发现其他语言中僵硬的引用系统比任何东西都更令人讨厌。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

相对容易发现
[…]
配对,但当您有许多转义引号时就不那么容易了。除非您有语法突出显示编辑器,否则很容易错过结束引号。

之所以有许多不同的方法来创建字符串,是因为有很多原因您可能需要字符串。因为字符串是许多应用程序的主干,所以这种方法很有意义纤毛粗壮多样

一旦你习惯了,你会发现其他语言中僵硬的引号系统比任何东西都要麻烦。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
比较容易发现
[…]
对,但当有许多转义引号时就不那么容易了。除非有语法突出显示编辑器,否则很容易漏掉结束语。

别担心,这不是Perl;-)不管怎样,“这就是语言的本质”。邮件列表可能更适合这个问题,但这里没有,因为没有比我给出的答案更“确定”的答案了。别担心,这不是Perl;-)不管怎样,“这就是语言的本质”。邮件列表可能更适合这个问题,但这里没有,因为没有比我给出的答案更“确定”的答案了。