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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發布時間:2023/12/18 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Ruby on Rails全栈课程】2.1 ruby语言入门 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在第一章中,項目我們已經創建好并且能輸出第一個helloworld了,我們先不急著做項目,先了解一下ruby,只是需要看得懂代碼。這一章我們簡單介紹一些ruby語言的語法。

1、運行程序的平臺,有三種方式運行ruby,第1種方法必須在項目文件夾下運行,第2、3種方法可以在任意文件夾下運行,前提是必須安裝ruby

(1)在控制臺中運行ruby
在寫項目的時候,建議用這個方法,因為我們之后做項目,在控制臺中可以直接調用項目中類方法和實例方法,測試很方便。
登錄vagrant,打開項目目錄,運行rails console(簡寫rails c)進入控制臺,輸入exit退出控制臺

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交互的方式輸入代碼直接執行
irb這個工具會隨著 Ruby 的安裝自動帶有,只需要在本地電腦命令行中鍵入 irb,就會進入交互式 Ruby。輸入exit退出交互模式。

xuzhaoning@xuchaoningdeMacBook-Air:~$ irb 2.2.1 :001 > puts "hello world" hello world=> nil 2.2.1 :002 > exit

(3)創建程序文件,再在命令行運行此文件
創建一個后綴為.rb的文件,命名為first_project.rb,里面寫上代碼puts “hello world”

進入創建的這個程序文件的目錄命令行上運行ruby first_project.rb,會輸出hello world。注意一定要在這個文件的目錄下運行。

xuzhaoning@xuchaoningdeMacBook-Air:~$ ruby first_project.rb #輸出信息 hello world
2、ruby是面向對象語言

ruby是面向對象語言,面向對象的意思,顧名思義,就是對對象進行操作,在ruby里面,想要創建一個對象,首先要創建類,然后調用new這個構造函數將類實例化,這個實例化之后的實體就是一個對象。

#咱們要對“車”進行實例化,先創建一個類Car class Car end #然后創建車這個對象 car1 = Car.new

car1就是從Car這個類,通過new構造方法,來創建的對象。

初學者能對“對象”這個概念理解到這一層就可以了,語言本身就是將抽象的東西,用代碼描述出來,來實現各種功能。要是想深入了解對象以及構造函數的工作,可以看《算法第四版》這本書。建議初學者先跟著我學會ruby,再去看這本書。因為算法比較難,你學會一門語言,再看算法書會比較有代入感。

3、ruby類、模塊

(1)通過class來定義一個類,類是抽象的,通過構造方法(new)才能將類變成一個實例。比如說我們之后建立一個論壇,定義一個Post類來代表帖子,post = Post.new來新建一個帖子,Post指的就是帖子這個一大類別,是抽象的,但是post是一個實際對象,指的是新建的這一個帖子,這個帖子有標題、內容等。類的命名規則用大寫字母開頭,多單詞組合時,每個單詞首字母大寫
(2)通過module來定義一個模塊,模塊是一種把方法、類和常量組合在一起的方式,模塊和類用法差不多,命名規則與類是一樣的,但是模塊不可以被實例化。如果你之前沒接觸過代碼的話,肯定對這一段描述會很迷惑,不過沒有關系,咱們都會經歷這一個階段,等你代碼寫的多了,自然而然就明白了。

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

實例方法:是實例對象可以調用的方法。
類方法:是類可以直接調用的方法。
方法名命名規則:全部小寫,多個單詞用下劃線_隔開

#定義一個類,命名為MethodTest irb(main):001:0> class MethodTest #定義一個實例方法,命名為ins_method irb(main):002:1> def ins_method irb(main):003:2> puts "調用實例方法" irb(main):004:2> end #定義一個類方法,命名為cla_method,「self.方法名」就是類方法 irb(main):005:1> def self.cla_method irb(main):006:2> puts "調用類方法" irb(main):007:2> end irb(main):008:1> end => :cla_method #new是構造函數,MethodTest.new就是將MethodTest這個類實例化成一個對象,用實例對象才能調用實例方法 irb(main):009:0> MethodTest.new.ins_method 調用實例方法 => nil #不能用類直接調用實例方法,用MethodTest類直接調用實例方法會報錯 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類直接調用就可以,不需要先將類實例化 irb(main):010:0> MethodTest.cla_method 調用類方法 => nil
5、ruby變量、常量

(1)全局變量:以$開頭。在整個程序中都可以訪問,全局變量的值在程序中任何地方都可以修改。在實際項目中,一般不使用。

#定義一個全局變量 $name = "xzn"

(2)實例變量:以@開頭,實例對象可以直接調用的變量。相同的變量對于不同的對象會有不同的值,只要對象還在,實例變量對應的值就不會消失。在實際開發中經常用到。

#創建一個名為Hello的類,在類中定義兩個方法initialize、set_name。 irb(main):001:0> class Hello #initialize方法是類調用構造函數時執行的。Hello.new("Amy")會調用該方法,將@name賦值為"Amy" irb(main):002:1> def initialize(myname) irb(main):003:2> @name = myname irb(main):004:2> end #set_name是一個實例方法,通過實例(也就是對象)能夠調用這個方法,不能通過類直接調用,比如:Hello.set_name是錯誤的。 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 #通過類調用new構造方法創建一個對象,命名為amy。將@name賦值為"Amy" irb(main):009:0> amy = Hello.new("Amy") => #<Hello:0x00007f5901a07f88> #通過amy這個對象,調用set_name實例方法,會輸出puts后面的語句,此時@name的值為"Amy" irb(main):010:0> amy.set_name Hello,my name is Amy => nil #通過類調用構造方法再創建一個對象,命名為li_hua。將@name賦值為"LiHua" irb(main):011:0> li_hua = Hello.new("LiHua") => #<Hello:0x00007f5901a2b348> #此時@name的值為"LiHua" irb(main):012:0> li_hua.set_name Hello,my name is LiHua => nil #再次用amy對象調用set_name方法,看一下@name實例變量,在不同的實例中,是否會相互影響。 #amy對象中@name的值是"Amy"。li_hua對象中@name的值是"LiHua",相同的變量對于不同的對象會有不同的值,不會相互影響。 irb(main):013:0> amy.set_name Hello,my name is Amy => nil

(3)類變量:以@@開頭,所有實例可以共享的一個變量。

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實例變量例子中,相同的變量對于不同的對象會有不同的值,amy對象中,@name的值為“Amy”, #lihua對象中,@name的值為“Lihua”。但是對于@@name類變量,@@name的值是被這個類實例化出來的對象共用的,當@@name的值為“Lihua”,那么所有對象對應的@@name的值也變成了“Lihua”,主要對比實例變量例子中的區別。 irb(main):013:0> amy.set_name Hello,my name is LiHua => nil

(4)常量:規定大寫字母開頭,實際開發中一般全部大寫,用來定義一個不可變的值。常量不可以定義在方法內。定義在類或模塊中的常量,可以被類和模塊內部訪問。定義在類或模塊外的常量,可以被全局訪問。

irb(main):001:0> class ConstantExample #定義常量 irb(main):002:1> VAR1 = 100 irb(main):003:1> VAR2 = 200 #定義一個實例方法 irb(main):004:1> def put_var irb(main):005:2> puts "第一個常量為#{VAR1}" irb(main):006:2> puts "第二個常量為#{VAR2}" irb(main):007:2> end irb(main):008:1> end => :put_var #實例化一個constant_example對象 irb(main):009:0> constant_example = ConstantExample.new => #<ConstantExample:0x00007f5901982950> #通過實例化對象調用實例方法,輸出被定義的常量 irb(main):010:0> constant_example.put_var 第一個常量為100 第二個常量為200 => nil

Ruby on Rails開發者文檔
http://doc.rubyfans.com/

總結

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

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。