A.7 字符串--(附:Here Document处理技巧)
查看( 216 ) /
评论( 8 )
TAG:
-
5swords发布于2008-06-18 21:20:17
-
第1个问题应该是产生空串,第2题就当它是个下一行开始的串。
QUOTE:
这一点对于用Ruby来做文档处理有很大的帮助,特别地,用这个技巧再结合序列化的相关技巧,你可以做出相当精彩的文稿处理。。
这一段很吸引人,不过文稿处理是什么东西?请多多指教。
-
neohsiao发布于2008-06-18 22:10:27
-
太好了,我还在新手区发了Here document的问题呢,终于有解答了,运气好!

-
neohsiao发布于2008-06-19 00:01:09
-
第一个问题,是因为<<标识符是hello,而句子hello.insert(1, " hello")将在here document建议以后
执行,所以,当句子是:CODE:
puts <<hello.insert(1, " hello")时,第一个hello作为了<<标识符的结束符,那么这个字符串为空,为空时在1位置插入一个元素就会引起
hello#第一个hello
hello#第二个hello
索引错误INDEXERROR,而如果第一个hello前面有空格的话则不当作<<标识符的结束符,而当作元素然后再把第二个hello当作<<标识符的结束符。等效于:CODE:
str = <<hello
hello#第一个hello,如果前面没有空格则str内容结束,内容为空。
hello#第二个hello。
#这里str结束
str.insert(1,"hello")
#如果字符串第一个为空格,在1位置插入的话,会把元素往后移动,而不会出现覆盖第一
#个的现象。
put str
第二题没有看懂……
[ 本帖最后由 neohsiao 于 2008-6-19 00:05 编辑 ]
-
quzhongwei
发布于2008-06-19 02:31:34
-
现在,请再看看原文。
-
liuxueming发布于2008-07-01 16:28:56
-
只要下面这行:
ok(<<hello, "Ruby", "Lua")
不分开行写——即就在一行上面,Ruby解释器会正常工作!
------------------------------------------------------------
这条语句执行报错!
can't find string "hello" anywhere before EOF
他的报错是正确的。
-
vintager发布于2008-07-07 17:16:20
-
可以把<<后面的hello看作是占位符,实际内容在下一行到hello之间。
-
weywong发布于2008-08-26 21:59:30
-
Here Document够绕人的。例子中的代码,仔细想想完全合乎逻辑;可要自己写实在写不出来。
-
punkpopb发布于2008-08-30 01:38:41
-
第一题的意思我没了,就也是第2行的hello如果顶格写的话就成了标识符hello的结束,所以这时候实际上Here Document对象是个空字串,所以对空字串使用insert方法自然会产生错误!
不过为什么我安装的ruby186-26(windows xp(pack 2)),在SciTE中运行这段代码(第2行hello顶格)却是可以通过的,并且结果是正确的!
不明白这是怎么一回事,但是如果去掉第3行的hello就出现老师所说的错误。
标题搜索
日历
|
|||||||||
| 日 | 一 | 二 | 三 | 四 | 五 | 六 | |||
| 1 | |||||||||
| 2 | 3 | 4 | 5 | 6 | 7 | 8 | |||
| 9 | 10 | 11 | 12 | 13 | 14 | 15 | |||
| 16 | 17 | 18 | 19 | 20 | 21 | 22 | |||
| 23 | 24 | 25 | 26 | 27 | 28 | 29 | |||
| 30 | |||||||||
我的存档
数据统计
- 访问量: 44
- 日志数: 19
- 建立时间: 2008-06-11
- 更新时间: 2008-06-11
