日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

【Ruby on Rails全栈课程】2.1 ruby语言入门

發(fā)布時(shí)間:2023/12/18 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Ruby on Rails全栈课程】2.1 ruby语言入门 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

在第一章中,項(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)

vagrant@vagrant-ubuntu-trusty-64:/vagrant/data_system$ rails c Running via Spring preloader in process 2659 Loading development environment (Rails 5.1.6.1) irb(main):001:0> puts "hello world" hello world => nil irb(main):002:0> exit

(2)以irb交互的方式輸入代碼直接執(zhí)行
irb這個(gè)工具會(huì)隨著 Ruby 的安裝自動(dòng)帶有,只需要在本地電腦命令行中鍵入 irb,就會(huì)進(jìn)入交互式 Ruby。輸入exit退出交互模式。

xuzhaoning@xuchaoningdeMacBook-Air:~$ irb 2.2.1 :001 > puts "hello world" hello world=> nil 2.2.1 :002 > 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 world
2、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.new

car1就是從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è)階段,等你代碼寫的多了,自然而然就明白了。

#定義一個(gè)類,命名為Car class Car end #定義一個(gè)模塊,命名為BigCar module BigCar end
4、ruby方法

實(shí)例方法:是實(shí)例對(duì)象可以調(diào)用的方法。
類方法:是類可以直接調(diào)用的方法。
方法名命名規(guī)則:全部小寫,多個(gè)單詞用下劃線_隔開(kāi)

#定義一個(gè)類,命名為MethodTest irb(main):001:0> class MethodTest #定義一個(gè)實(shí)例方法,命名為ins_method irb(main):002:1> def ins_method irb(main):003:2> puts "調(diào)用實(shí)例方法" irb(main):004:2> end #定義一個(gè)類方法,命名為cla_method,「self.方法名」就是類方法 irb(main):005:1> def self.cla_method irb(main):006:2> puts "調(diào)用類方法" irb(main):007:2> end irb(main):008:1> end => :cla_method #new是構(gòu)造函數(shù),MethodTest.new就是將MethodTest這個(gè)類實(shí)例化成一個(gè)對(duì)象,用實(shí)例對(duì)象才能調(diào)用實(shí)例方法 irb(main):009:0> MethodTest.new.ins_method 調(diào)用實(shí)例方法 => nil #不能用類直接調(diào)用實(shí)例方法,用MethodTest類直接調(diào)用實(shí)例方法會(huì)報(bào)錯(cuò) irb(main):012:0> MethodTest.ins_method NoMethodError: undefined method 'ins_method' for MethodTest:Class Did you mean? instance_methodfrom (irb):12 #cla_method是類方法,用MethodTest類直接調(diào)用就可以,不需要先將類實(shí)例化 irb(main):010:0> MethodTest.cla_method 調(diào)用類方法 => nil
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 => nil

Ruby on Rails開(kāi)發(fā)者文檔
http://doc.rubyfans.com/

總結(jié)

以上是生活随笔為你收集整理的【Ruby on Rails全栈课程】2.1 ruby语言入门的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。