【Ruby on Rails全栈课程】2.1 ruby语言入门
在第一章中,項(xiàng)目我們已經(jīng)創(chuàng)建好并且能輸出第一個(gè)helloworld了,我們先不急著做項(xiàng)目,先了解一下ruby,只是需要看得懂代碼。這一章我們簡(jiǎn)單介紹一些ruby語(yǔ)言的語(yǔ)法。
1、運(yùn)行程序的平臺(tái),有三種方式運(yùn)行ruby,第1種方法必須在項(xiàng)目文件夾下運(yùn)行,第2、3種方法可以在任意文件夾下運(yùn)行,前提是必須安裝ruby
(1)在控制臺(tái)中運(yùn)行ruby
在寫項(xiàng)目的時(shí)候,建議用這個(gè)方法,因?yàn)槲覀冎笞鲰?xiàng)目,在控制臺(tái)中可以直接調(diào)用項(xiàng)目中類方法和實(shí)例方法,測(cè)試很方便。
登錄vagrant,打開(kāi)項(xiàng)目目錄,運(yùn)行rails console(簡(jiǎn)寫rails c)進(jìn)入控制臺(tái),輸入exit退出控制臺(tái)
(2)以irb交互的方式輸入代碼直接執(zhí)行
irb這個(gè)工具會(huì)隨著 Ruby 的安裝自動(dòng)帶有,只需要在本地電腦命令行中鍵入 irb,就會(huì)進(jìn)入交互式 Ruby。輸入exit退出交互模式。
(3)創(chuàng)建程序文件,再在命令行運(yùn)行此文件
創(chuàng)建一個(gè)后綴為.rb的文件,命名為first_project.rb,里面寫上代碼puts “hello world”
進(jìn)入創(chuàng)建的這個(gè)程序文件的目錄命令行上運(yùn)行ruby first_project.rb,會(huì)輸出hello world。注意一定要在這個(gè)文件的目錄下運(yùn)行。
xuzhaoning@xuchaoningdeMacBook-Air:~$ ruby first_project.rb #輸出信息 hello world2、ruby是面向?qū)ο笳Z(yǔ)言
ruby是面向?qū)ο笳Z(yǔ)言,面向?qū)ο蟮囊馑?#xff0c;顧名思義,就是對(duì)對(duì)象進(jìn)行操作,在ruby里面,想要?jiǎng)?chuàng)建一個(gè)對(duì)象,首先要?jiǎng)?chuàng)建類,然后調(diào)用new這個(gè)構(gòu)造函數(shù)將類實(shí)例化,這個(gè)實(shí)例化之后的實(shí)體就是一個(gè)對(duì)象。
#咱們要對(duì)“車”進(jìn)行實(shí)例化,先創(chuàng)建一個(gè)類Car class Car end #然后創(chuàng)建車這個(gè)對(duì)象 car1 = Car.newcar1就是從Car這個(gè)類,通過(guò)new構(gòu)造方法,來(lái)創(chuàng)建的對(duì)象。
初學(xué)者能對(duì)“對(duì)象”這個(gè)概念理解到這一層就可以了,語(yǔ)言本身就是將抽象的東西,用代碼描述出來(lái),來(lái)實(shí)現(xiàn)各種功能。要是想深入了解對(duì)象以及構(gòu)造函數(shù)的工作,可以看《算法第四版》這本書。建議初學(xué)者先跟著我學(xué)會(huì)ruby,再去看這本書。因?yàn)樗惴ū容^難,你學(xué)會(huì)一門語(yǔ)言,再看算法書會(huì)比較有代入感。
3、ruby類、模塊
(1)通過(guò)class來(lái)定義一個(gè)類,類是抽象的,通過(guò)構(gòu)造方法(new)才能將類變成一個(gè)實(shí)例。比如說(shuō)我們之后建立一個(gè)論壇,定義一個(gè)Post類來(lái)代表帖子,post = Post.new來(lái)新建一個(gè)帖子,Post指的就是帖子這個(gè)一大類別,是抽象的,但是post是一個(gè)實(shí)際對(duì)象,指的是新建的這一個(gè)帖子,這個(gè)帖子有標(biāo)題、內(nèi)容等。類的命名規(guī)則用大寫字母開(kāi)頭,多單詞組合時(shí),每個(gè)單詞首字母大寫
(2)通過(guò)module來(lái)定義一個(gè)模塊,模塊是一種把方法、類和常量組合在一起的方式,模塊和類用法差不多,命名規(guī)則與類是一樣的,但是模塊不可以被實(shí)例化。如果你之前沒(méi)接觸過(guò)代碼的話,肯定對(duì)這一段描述會(huì)很迷惑,不過(guò)沒(méi)有關(guān)系,咱們都會(huì)經(jīng)歷這一個(gè)階段,等你代碼寫的多了,自然而然就明白了。
4、ruby方法
實(shí)例方法:是實(shí)例對(duì)象可以調(diào)用的方法。
類方法:是類可以直接調(diào)用的方法。
方法名命名規(guī)則:全部小寫,多個(gè)單詞用下劃線_隔開(kāi)
5、ruby變量、常量
(1)全局變量:以$開(kāi)頭。在整個(gè)程序中都可以訪問(wèn),全局變量的值在程序中任何地方都可以修改。在實(shí)際項(xiàng)目中,一般不使用。
#定義一個(gè)全局變量 $name = "xzn"(2)實(shí)例變量:以@開(kāi)頭,實(shí)例對(duì)象可以直接調(diào)用的變量。相同的變量對(duì)于不同的對(duì)象會(huì)有不同的值,只要對(duì)象還在,實(shí)例變量對(duì)應(yīng)的值就不會(huì)消失。在實(shí)際開(kāi)發(fā)中經(jīng)常用到。
#創(chuàng)建一個(gè)名為Hello的類,在類中定義兩個(gè)方法initialize、set_name。 irb(main):001:0> class Hello #initialize方法是類調(diào)用構(gòu)造函數(shù)時(shí)執(zhí)行的。Hello.new("Amy")會(huì)調(diào)用該方法,將@name賦值為"Amy" irb(main):002:1> def initialize(myname) irb(main):003:2> @name = myname irb(main):004:2> end #set_name是一個(gè)實(shí)例方法,通過(guò)實(shí)例(也就是對(duì)象)能夠調(diào)用這個(gè)方法,不能通過(guò)類直接調(diào)用,比如:Hello.set_name是錯(cuò)誤的。 irb(main):005:1> def set_name irb(main):006:2> puts "Hello,my name is #{@name}" irb(main):007:2> end irb(main):008:1> end => :set_name #通過(guò)類調(diào)用new構(gòu)造方法創(chuàng)建一個(gè)對(duì)象,命名為amy。將@name賦值為"Amy" irb(main):009:0> amy = Hello.new("Amy") => #<Hello:0x00007f5901a07f88> #通過(guò)amy這個(gè)對(duì)象,調(diào)用set_name實(shí)例方法,會(huì)輸出puts后面的語(yǔ)句,此時(shí)@name的值為"Amy" irb(main):010:0> amy.set_name Hello,my name is Amy => nil #通過(guò)類調(diào)用構(gòu)造方法再創(chuàng)建一個(gè)對(duì)象,命名為li_hua。將@name賦值為"LiHua" irb(main):011:0> li_hua = Hello.new("LiHua") => #<Hello:0x00007f5901a2b348> #此時(shí)@name的值為"LiHua" irb(main):012:0> li_hua.set_name Hello,my name is LiHua => nil #再次用amy對(duì)象調(diào)用set_name方法,看一下@name實(shí)例變量,在不同的實(shí)例中,是否會(huì)相互影響。 #amy對(duì)象中@name的值是"Amy"。li_hua對(duì)象中@name的值是"LiHua",相同的變量對(duì)于不同的對(duì)象會(huì)有不同的值,不會(huì)相互影響。 irb(main):013:0> amy.set_name Hello,my name is Amy => nil(3)類變量:以@@開(kāi)頭,所有實(shí)例可以共享的一個(gè)變量。
irb(main):001:0> class Hello irb(main):002:1> def initialize(myname) irb(main):003:2> @@name = myname irb(main):004:2> end irb(main):005:1> def set_name irb(main):006:2> puts "Hello,my name is #{@@name}" irb(main):007:2> end irb(main):008:1> end => :set_name irb(main):009:0> amy = Hello.new("Amy") => #<Hello:0x00007f5901a07f88> irb(main):010:0> amy.set_name Hello,my name is Amy => nil irb(main):011:0> li_hua = Hello.new("LiHua") => #<Hello:0x00007f5901a2b348> irb(main):012:0> li_hua.set_name Hello,my name is LiHua => nil #在上面@name實(shí)例變量例子中,相同的變量對(duì)于不同的對(duì)象會(huì)有不同的值,amy對(duì)象中,@name的值為“Amy”, #lihua對(duì)象中,@name的值為“Lihua”。但是對(duì)于@@name類變量,@@name的值是被這個(gè)類實(shí)例化出來(lái)的對(duì)象共用的,當(dāng)@@name的值為“Lihua”,那么所有對(duì)象對(duì)應(yīng)的@@name的值也變成了“Lihua”,主要對(duì)比實(shí)例變量例子中的區(qū)別。 irb(main):013:0> amy.set_name Hello,my name is LiHua => nil(4)常量:規(guī)定大寫字母開(kāi)頭,實(shí)際開(kāi)發(fā)中一般全部大寫,用來(lái)定義一個(gè)不可變的值。常量不可以定義在方法內(nèi)。定義在類或模塊中的常量,可以被類和模塊內(nèi)部訪問(wèn)。定義在類或模塊外的常量,可以被全局訪問(wèn)。
irb(main):001:0> class ConstantExample #定義常量 irb(main):002:1> VAR1 = 100 irb(main):003:1> VAR2 = 200 #定義一個(gè)實(shí)例方法 irb(main):004:1> def put_var irb(main):005:2> puts "第一個(gè)常量為#{VAR1}" irb(main):006:2> puts "第二個(gè)常量為#{VAR2}" irb(main):007:2> end irb(main):008:1> end => :put_var #實(shí)例化一個(gè)constant_example對(duì)象 irb(main):009:0> constant_example = ConstantExample.new => #<ConstantExample:0x00007f5901982950> #通過(guò)實(shí)例化對(duì)象調(diào)用實(shí)例方法,輸出被定義的常量 irb(main):010:0> constant_example.put_var 第一個(gè)常量為100 第二個(gè)常量為200 => nilRuby on Rails開(kāi)發(fā)者文檔
http://doc.rubyfans.com/
總結(jié)
以上是生活随笔為你收集整理的【Ruby on Rails全栈课程】2.1 ruby语言入门的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 计算机导论的答案,计算机导论答案
- 下一篇: 本人的月末结账步骤备忘