您的位置:首页 > 编程语言 > Ruby

Ruby on beginning(一)

2015-12-26 10:21 387 查看
Ruby 菜鸟教程

如何开始?

方法一: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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ruby begin