@fredwu 还有就是,0 这个元素可以出现在任意一个正确结果中,那就是说,如果输入的数组有 0 这个元素的话,最后一定是有偶数个正确结果。 你给出的结果是 7 组。漏下上面说的那一组啦 :>
@fredwu 我个疑问: 根据题意,[-1,0,1,2,3] 也是正确结果,却在你的输出中没有。
#29 楼 @zhang_victor 其实关于end
是各有所爱了。和 Python 的强制缩进一样。有人很喜欢,有人就挺反感。我对 python 的强制缩进就不感冒。对 end 反而挺喜欢。呵呵
@evan 单纯找习题不好找,可以这样: 你可以看一些 DSL 风格的 gem,先不看它实现代码,只看它的用法。根据其用法,自己尝试推测一下它使用了哪些主要的元编程技法,最后你再看它代码来验证一下。
是 ``` 而不是'''
git ls-files
[Ruby Quiz] 话题挺有意思,建议坛子里可以建个 Ruby Quiz 的节点。:>
@ashchan 使用 MacRuby 还是 ObjC?
有个客户端也挺好的,有时候不需要开浏览器,直接用客户端就行了。 :> 如果手机有就更好了。
#17 楼 @413472212 这个行为和 windows 有关。在 windows 下,MoveFile这个 api,官方是有说明的: The one caveat is that the MoveFile function will fail on directory moves when the destination is on a different volume. 如果跨分区移动目录,需要使用MoveFileEx这个 api。
我基本很少用 ri:{
#10 楼 @feitian124 m 是不是指 member 的意思? 以前 MFC 的风格 成员变量 是 以 m_ 开头,也许可以做参考
#13 楼 @413472212 那就这样呗: 先拷贝到目的目录,然后再删除原来的目录内容,不就行了。
require 'fileutils'
FileUtils.cp_r "r:/t","k:/"
FileUtils.remove_dir "r:/t"
t 是已存在的目录,把 t 目录内容拷贝到 K 盘下,然后删除 r 盘下的 t 目录内容。
#13 楼 @413472212 前面我说的第一参数不能是目录不太准确。 第一参数是目录的话,只能在同一分区下(windows)。
FileUtils.mv "r:/x","r:/y"
x 为目录。 结果有 2 中情况:
你应该是往别的盘上移动文件夹吧?才会出现 Permission denied
reduce(:+)
reduce(&:+)
这两种写法是有本质区别的:
reduce &:+
。这个&很关键,它作用于支持 to_proc 的对象前,以这个例子说,在调用中,Ruby 会把这个 proc 作为 reduce 的代码块 来调用。所以,第一种是以普通形式调用,第二种则是以代码块形式调用。所以第二种形式略慢于第一种。
注意:任何方法调用都可以用一个&参数作为最后一个参数 举例:
def x
yield 'abcd' if block_given?
end
puts x &:upcase
多种语言的编码规范都提倡 2 空格缩进,不用 tab 缩进。当然这不是硬性规定。
@zw963 @messiahxu 在 Ruby 的 C 实现里,inject 就是 reduce,reduce 就是 inject,没有区别。C 代码写的明明白白:
rb_define_method(rb_mEnumerable, "inject", enum_inject, -1);
rb_define_method(rb_mEnumerable, "reduce", enum_inject, -1);
都是 enum_inject 这个函数来实作的。
Cool~
那个 index 方法没问题吗?