如何开始?
方法一:ruby安装好之后,命令行输入irb,一个交互式ruby session就开始了。
方法二:如果有ruby的解释器(如,test.rb),则只要执行‘ruby test.rb’即可。
语法?
Ruby 把分号和换行符解释为语句的结尾。但是,如果 Ruby 在行尾遇到运算符,比如 +、- 或反斜杠,它们表示一个语句的延续。
ex:
puts 'hello world' +
'xufei'
会打印出 ‘hello worldxufei’,如果没有 ‘+’,则只会打印出 ‘ hello world’
"Here Document"
<span style="font-size:12px;">print <<xufei
bababababbabba here document 。
fsdlkflsadfklsdkflaskdfl
fsdlkflsadfklsdkfdsfasdfsaffasdfs
xufei
print <<"EOF"; # 与上面相同
这是第二种方式创建here document 。
多行字符串。
EOF
print <<`EOC` # 执行命令
echo hi there
echo hello there
EOC
print <<"foo", <<"bar" # 您可以把它们进行堆叠
I said foo.
foo
I said bar.
bar</span>
注:标示符的引号不同用的语法不同,第二种和第三种
BEGIN, END, COMMENT
在程序运行之前/结束时调用,‘#’可以注释一行或者一行的一部分,=begin =end可以注释一个代码块。
此处要特别声明的是:BEGIN,END 要大写
<span style="font-size:12px;">puts 'hello world' +
'xufei' #追加一行
#test BEGIN and END
END {
puts 'this is the end word.'
}
BEGIN {
puts 'today is 2015/12/26'
}
=begin
this 思
注释
一个代码块
=end</span>
字符串
“”和‘’的区别:“”的字符串中内容可被替换并可以使用所有反斜杠,‘’的字符串不可以被替换且只能用\\和\'两个反斜杠。
puts "Multiplication Value : #{24*60*60}";
哈希
有人说,ruby的精华70%都在哈希,所以有多重要不用我多说了吧
colors = {'name' => 'xufei', 'age' => 10, 'belong' => 'IT'}
colors.each do |key, value|
print key, ' is ' , value, "\n" #print和puts的区别:print不换行,puts遇分号或换行之后打出的内容换行,注意,此处连接字符串用的逗号
end
范围构造
范围可使用 s..e 和 s...e 来构造,或者通过 Range.new 来构造。
#范围(try (4...10))
(4..10).each do |n|
print n, ' '
end
color = Range.new(10,16)
color.each do |n|
print n, ' '
end
Ruby中的变量
本人暂时还没有深入了解这些变量什么时候用
- 局部变量:局部变量是在方法中定义的变量。局部变量在方法外是不可用的。在后续的章节中,您将看到有关方法的更多细节。局部变量以小写字母或 _ 开始。
- 实例变量:实例变量可以跨任何特定的实例或对象中的方法使用。这意味着,实例变量可以从对象到对象的改变。实例变量在变量名之前放置符号(@)。
- #实例变量如果没有初始化,则输出nil
- 类变量:类变量可以跨不同的对象使用。类变量属于类,且是类的一个属性。类变量在变量名之前放置符号(@@)。
- #类变量必须初始化才可以在方法定义中使用
- 全局变量:类变量不能跨类使用。如果您想要有一个可以跨类使用的变量,您需要定义全局变量。全局变量总是以美元符号($)开始。
- 给全局变量赋值会改变全局状态,不建议使用。
Ruby用new方法创建对象(new属于类方法)
如果要创建带参数的对象,则在创建类的同时,创建initialize方法。
class Customer
@@no_of_customers=0
def initialize(id, name, addr)
@cust_id=id
@cust_name=name
@cust_addr=addr
end
end
Ruby defined? 运算符
defined? variable # 如果 variable 已经初始化,则为 True
问题:
a + b 被解释为 a+b (这是一个局部变量) a +b 被解释为 a(+b) (这是一个方法调用)
Mac key shorts:https://support.google.com/chrome/answer/157179?hl=zh-Hans