“未定义的方法”;每一个;在Ruby 2.0中
新的Mac OS更新将系统Ruby升级到了2.0,这很好,但现在我发现我的许多脚本中存在错误,我不知道如何修复这些错误。具体来说,我的代码使用mdfind调用文件,然后读取它们,如下所示:“未定义的方法”;每一个;在Ruby 2.0中,ruby,Ruby,新的Mac OS更新将系统Ruby升级到了2.0,这很好,但现在我发现我的许多脚本中存在错误,我不知道如何修复这些错误。具体来说,我的代码使用mdfind调用文件,然后读取它们,如下所示: files = %x{mdfind -onlyin /Users/Username/Dropbox/Tasks 'kMDItemContentModificationDate >= "$time.today(-1)"'} files.each do |file| 现在我得到一个错误,它说 undefi
files = %x{mdfind -onlyin /Users/Username/Dropbox/Tasks 'kMDItemContentModificationDate >= "$time.today(-1)"'}
files.each do |file|
现在我得到一个错误,它说
undefined method `each' for #<String:0x007f83521865c8> (NoMethodError)"
#(NoMethodError)的未定义方法“each”
似乎每一行现在都需要一个限定符。我尝试了每一行,但这产生了额外的错误。是否有一个简单的替代品,我忽略了这一点?Ruby 1.8以前使用的是隐式拆分
每个(分隔符=$/){substr | block}=>str
使用提供的参数作为记录分隔符($/默认情况下)拆分str,将每个子字符串依次传递给提供的块。如果提供了长度为零的记录分隔符,则将字符串拆分为由多个连续换行分隔的段落
我相信,明确的分裂在现代红宝石中应该是有效的
files.split($/).each do |file|
其中,$/
是换行符。您可以使用显式字符,因为您的脚本无论如何都不可移植
files.split("\n").each do |file|
更新
或者,您可以使用现在已灭绝的的别名
files.each_line do |file|
Ruby 1.8以前有一个执行隐式拆分的应用程序
每个(分隔符=$/){substr | block}=>str
使用提供的参数作为记录分隔符($/默认情况下)拆分str,将每个子字符串依次传递给提供的块。如果提供了长度为零的记录分隔符,则将字符串拆分为由多个连续换行分隔的段落
我相信,明确的分裂在现代红宝石中应该是有效的
files.split($/).each do |file|
其中,$/
是换行符。您可以使用显式字符,因为您的脚本无论如何都不可移植
files.split("\n").each do |file|
更新
或者,您可以使用现在已灭绝的的别名
files.each_line do |file|
String没有methodeach
。它在任何现代ruby中都不起作用。doput files.class
,你会得到答案的。为什么会出现错误。Sergio-就在昨天,这个确切的脚本在1.8.7上工作过。显然,在1.8中有String#each。但现在没有了。Arup-我不确定我是否理解你的评论。String没有methodeach
。它在任何现代ruby中都不起作用。do
放入文件。class
,你会得到答案。为什么会出错。Sergio-这个确切的脚本在1.8.7上工作,就在昨天。显然,在1.8中每个都有字符串。但现在不会了。Arup-我不确定我是否理解你的评论。工作得很有魅力。谢谢,Sergio。想成为你的朋友。李工作过吗谢谢你,塞吉奥。想成为你的朋友。