- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我在维基百科上找到了这个代码块,作为 Ruby 中 quine(打印自身的程序)的示例。
puts <<2*2,2
puts <<2*2,2
2
但是,我不明白它是如何工作的。特别是,我没有得到的是,当我删除最后一行时,出现此错误:
syntax error, unexpected $end, expecting tSTRING_CONTENT or tSTRING_DBEG or tSTRING_DVAR or tSTRING_END
这些行中发生了什么?
最佳答案
<<something
语法以 here-document 开始,通过 Perl 从 UNIX shell 借用 - 它基本上是一个多行字符串文字,从 <<
之后的行开始当一行以 something
开头时结束.
所以在结构上,程序就是这样做的:
puts str*2,2
... 即打印两份 str
然后是数字 2。
但不是变量 str
,它通过 here-document 包含一个文字字符串,其结尾标记也是数字 2:
puts <<2*2,2
puts <<2*2,2
2
所以它打印出字符串的两个副本 puts <<2*2,2
,然后是 2。(由于用于打印它们的方法是 puts
,所以这些东西中的每一个都会自动附加一个换行符。)
关于ruby - 了解 ruby 奎因,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10873379/
在 Haskell 中使用“ap”monad 的正确方法是什么?我想做类似的事情: main = (putStr . ap (++) show) "main = (putStr . ap (++) s
我在维基百科上找到了这个代码块,作为 Ruby 中 quine(打印自身的程序)的示例。 puts <<2*2,2 puts <<2*2,2 2 但是,我不明白它是如何工作的。特别是,我没有得到的是,
我是一名优秀的程序员,十分优秀!