没有客观共识的辩论毫无意义。。 其实就算法律也不过是强制性的道德,道德来源于大多数人的观点,如果大多数人认为存在歧视,那它也会渐渐变成法律,或者呈现无形的约束力
人本来就是主观的,有的敏感有的不敏感,只能说换个角度想法会不一样
完全不觉得有歧视,有些人真是想得太多,有点莫名其妙
当时没留意这个问题。。惭愧
不过用 set_trace_func 和 disasm 去看调用的过程,并没有发现哪里节省了,scan 是生成了数组并推回栈里再调用的 each,调用次数是后者更多啊
#5 楼 @flypiggys 我也觉得= =
我做了几题,但是普遍比 Python 差怎么办。。
印象中只是封装了一下 socket,用 marshal 来 dump 对象,传过去再解冻,感觉并没有什么卵用
直接连接两个数组,然后用 Array#uniq,带一个代码块{|x| x[:k]}
不过这样是用顺序上左边的来 uniq,那连接的时候反着连就好了
写出来就是
def merge(l1,l2,key)
result = l2 + l1
result.uniq{|x| x[key]}
end
@although2013 应该是对的
在方法 foo 里,self 是 MyFile,你的代码等于是
def foo
self.each_line do | line |
self.puts line
end
end
而File#puts的含义是向文件中写入内容,而错误出现在write方法,也说明了正在尝试向文件写入。
在 foo 外的过程,puts 是 Kernel.puts,含义是向控制台输出。
解决这个问题,可以在方法内显式调用
Kernel.puts line
$stdout.puts line
两种都可以
#3 楼 @blueplanet 和 git 并没有关系啊,不过为了保持目录结构而在每个空目录建文件,我还不如 mkdir...
说到 gem 我倒是刚遇到一个问题,空的文件夹没办法加到 gem 的 files 里,本来可以拷贝的一个目录结构,现在不得不一句一句 mkdir
典型的滥用 DSL..
RMMSeg
http://justjavac.com/codepuzzle/2012/11/11/codepuzzle-float-who-stole-your-accuracy.html 这个问题计算机科学概论之类的书里应该有叙述,和浮点数在计算机内的表示有关
终于看到用 Padrino 的啦
不喜欢 alias,如果要重新打包一个方法,我会把方法作为 UnboundMethod 存起来,再重新绑定调用,这起码不会污染作用域中的命名
局部变量的声明会被置顶, ruby 里没有单独的变量声明过程,所以用 js 举个例子,
var a = a + 1;
实际上是
var a;
a = a + 1;
在程序代码执行之前,a 就已经存在了 不信反汇编一下
code = <<EOF
a = a + 1
EOF
puts RubyVM::InstructionSequence.compile(code).disasm # =>
=begin
== disasm: <RubyVM::InstructionSequence:<compiled>@<compiled>>==========
local table (size: 2, argc: 0 [opts: 0, rest: -1, post: 0, block: -1, keyword: 0@3] s1)
[ 2] a
0000 trace 1 ( 1)
0002 getlocal_OP__WC__0 2
0004 putobject_OP_INT2FIX_O_1_C_
0005 opt_plus <callinfo!mid:+, argc:1, ARGS_SKIP>
0007 dup
0008 setlocal_OP__WC__0 2
0010 leave
=end
a 已经被放进了 local table,而程序直接就用 getlocal 去获取局部变量 a 了,也就是代码真正被执行之前,局部变量 a 已经被声明了
和代码块中的 yield 类似,在 yield 出去的时候,代码块内的代码执行就暂停了,每次拿 next 的时候都会要求这个代码块 yield 出一个值。至于本质上的实现和 Fiber 有关系,我从这看的http://stackoverflow.com/questions/9052621/why-do-we-need-fibers
instance_exec
#6 楼 @tylerlong 我就是业余玩玩,不过自己做东西的时候也可以用到。
那个窗口的代码就在 file_dialog.rb 里啊,构造了一个结构体,然后调用了 windows c api 的 GetOpenFileName 函数,就是这个。
#1 楼 @africwildman
`start`,读取 comdlg32.dll,文件名区分大小写,三个问题导致 linux 不能运行。。现在都修复了,试试新的 0.3.3 版本
linux 下 get_open_file_name 恒返回空路径,别的应该没问题了
#4 楼 @chrisloong 是 nginx 反代的设置有问题。。我一开始就怀疑是 nginx,排查的时候搞错了,后来才发现,加了几行 proxy_set_header 就好了,还没细看
#4 楼 @chrisloong 情况已于原帖更新
#4 楼 @chrisloong 一样