#3 楼 @diudiutang 还有装什么需要 Xcode?我不是专业开发者,就是要 Ruby 写写小脚本,觉得 Xcode 可能没必要
还有一个 Vintage.sublime-package 是干什么的?
想匹配汉字,用 /\p{Han}/
#5 楼 @ekim_sgra 双飞燕的作者 David Flanagan 也是 JavaScript - The Definitive Guide 的作者
geany 不错
#4 楼 @jinleileiking 没有 1.9-head 啊
$ rvm list known
# MRI Rubies
[ruby-]1.8.6[-p420]
[ruby-]1.8.7[-p358]
[ruby-]1.8.7-head
[ruby-]1.9.1[-p431]
[ruby-]1.9.2-p180
[ruby-]1.9.2-p290
[ruby-]1.9.2[-p318]
[ruby-]1.9.2-head
[ruby-]1.9.3-preview1
[ruby-]1.9.3-rc1
[ruby-]1.9.3-p0
[ruby-]1.9.3[-p125]
[ruby-]1.9.3-head
ruby-head
#1 楼 @linjunpop 我尝试了 rvm install ruby-head 一下,怎么安装的是 1.8.7-p358 啊? 纯 Linux 新手和 RVM 新手,不了解,多谢指点!
我看到 rvm requirements 以后有这么一条:
To install rbx and/or Ruby 1.9 head (MRI) (eg. 1.9.2-head),
then you must install and use rvm 1.8.7 first.
可是我现在的 rvm 版本是 1.12.1,难道要安装低版本的才能装 ruby-head?
#34 楼 @victordong 这种写法不算好啊 最直观的就是写成 10.times.map { '1' }
#28 楼 @LinuxGit result ||= a 应该等效于 result = result || a,不等效于 result = a if result.nil?
r = 123
p [(r ||= '123')] #=> [123]
p [(r = r || '123')] #=> [123]
p [(r = '123' if r.nil?)] #=> [nil]
看看返回值的结果是不同的。
实际上||=也不完全等同于拆开的=和||
A = 123
A ||= 456 # 无警告信息
而
A = 123
A = A || 456 # warning: already initialized constant A
||= 是经过优化的特殊运算符
嗯,我非常不喜欢 5 months, 1 week ago 这样的时间标记,太不精确了,直接标明日期不好么
The Ruby Programming Language Programming.Ruby.1.9 就这两本最好
o = Object.new
o.instance_exec(123) {|x| p x }
exec 只能接代码块,不能接字符串,eval 二者皆可 exec 作为方法可以接受参数,然后把它接受的对象传递给代码块,同时把传递对象的环境也带进了 exec 的代码块
The Ruby Programming Language p270:
8.2.3 instance_exec and class_exec
Ruby 1.9 defines two more evaluation methods: instance_exec and class_exec (and its alias, module_exec). These methods evaluate a block (but not a string) of code in the context of the receiver object, as instance_eval and class_eval do. The difference is that the exec methods accept arguments and pass them to the block. Thus, the block of code is evaluated in the context of the specified object, with parameters whose values come from outside the object.
关键字是形式上可以做变量名,但是系统保留了,不让你用来做变量名的 token ->根本形式上都不可做变量名,无所谓关键字
就是一个 token,跟 foo(args) 里的、%w这些东西一样,不是关键字,也不是方法