先定话题,再说到哪里,定下 topic 可以方便其他人调整自己的时间
#51 楼 @sundevilyang ruby tuesday 是一种比较“轻量级”的技术分享方式,topic 没有限制,之前我一直在维护 http://ruby-china.org/wiki/hangzhou_ruby_tuesday 这个页面,不过后来回家一段时间,没有更新
别纠结,两种几乎一样好
系统学习吧,rails 中充满了 DSL,就像一个新的语言,基础概念还是要学的,没有别的捷径。 另外还有一个建议:如果你有一定 web 开发经验并且思路和 rails 不同,那么基于 rack、sinatra 之类做一个你自己的 web 框架也是不错的选择
我是在应用中嵌入版本控制能力,所以 emacs 什么的就关系不大了。不过看来没有太好的方式,那我就直接封装命令行吧
这种面试本身就很不靠谱,面试者根据你的单一表现判断你的单一能力,但其实这里面因果关系没那么简单,专业的做法是一整套复合测试,就是为了避免各种主观判断错误,遗憾的是这么做成本很高......
#16 楼 @linjunhalida js 就是个大杂烩,所以大家都觉得象自己喜欢的那种语言,嘿嘿
没有 1.9 的?
#14 楼 @donnior 我们一般说对象是为数据添加了(相关)行为,而闭包就是为行为绑定了(关联)数据,所以它们都是某种“数据 + 行为”的编程结构,在实现层面上应该是很象的。不知道你会不会 java,java 中没有闭包,替代它的是匿名内部类,类似这样:
final int x = 100;
someCollection.sort(new Comparable(){
public int compare(Object a, Object b){
...... // 这里可以使用x的值,因为被"复制"进来了
}
}
可以看出,除了因为不支持 duck type 而多出的那些类型系统代码外,匿名内部类和闭包的唯一区别就是匿名内部类要 new 出一个对象,从这个角度看,闭包其实就象一个只有一个函数的对象。而所谓 binding,可以这么理解,构造这个(闭包)对象时,我们将需要用到的外部变量都复制进来以备今后使用,这就是所谓“延长了变量的生命周期”的含义,而如果这个变量是在引用一个对象,那么显然这个对象就可以在闭包中被影响。最后,具体对于 ruby 语言,由于一切变量都是对某个对象的引用,所以内部就应该能修改变量在外部的值
今天刚看到有人说 taiwai 社区讨论的问题比较有技术含量,结果这个月经贴又被翻出来了......好吧,我也是 ubuntu
#4 楼 @donnior 楼主说的不是 ruby 闭包的问题,所以加了新语法依然无用
$ irb
1.9.3p194 :001 > def ss
1.9.3p194 :002?> x = 'aa'
1.9.3p194 :003?> yield('cc')
1.9.3p194 :004?> end
=> nil
1.9.3p194 :005 > x = 'bb'
=> "bb"
1.9.3p194 :006 > ss{|y;x| "#{x}, #{y} world"}
=> ", cc world"
楼主估计还没有理解闭包,闭包的一个重要作用就是延长了外部变量的生命周期(ruby 里面的 binding 就是对外部环境的对象化的结果) 简单一点说,这里有三个 x 变量,外部环境中的变量 x,函数体内部的局部变量 x,传入函数的 block 自身携带的局部变量 x,三者不可混为一谈
还是系统的看看书和 rubydoc 再问吧,说起来挺罗嗦的
最难以忍受的是那个 file browser 插件,单击目录节点的时候经常不是打开节点而是进入目录,很不方便
哦也
#10 楼 @zw963 ruby 的哲学是把权利交给开发者,所以比较适合 geek #9 楼 @zw963 说到“所有语言都很相似”,要看怎么理解。 我们可以说这句话错误,是因为有的人喜欢拿着这句话排斥新的语言,但是语言是人和计算机打交道的中介,一种语言往往意味着一种看问题的角度,背后是方法论的差异,“语言只是一层皮”固然不假,但是这层皮其实决定了你的思路和设计方案 但是,学了几种语言以后,我确实感觉到语言要解决的问题都很相似,当然,并不是有些人所理解的——“都是 0、1 而已”,我感到相似的是数据和过程抽象、逻辑分派方式,以及如何处理复用和解耦之间的矛盾,在这些地方,各种语言都要面对,经过多年的互相学习,解决方法不会太多,故而显得类似 总的来说,如果是初学者或者就会一两种语言,最好别学人家说什么“所有语言都一样”,等到自己亲身体验几种语言甚至自己发明一种语言以后再说不迟
#12 楼 @googya 我个人其实比较喜欢这种做法,自我声明 encode,可以避免很多问题。当然,如果需要,可以写段脚本统一添加这个文件头 #11 楼 @charmquark 1.8 也不复杂吧,不需要用 ruby 写,iconv 编译不麻烦的