Ruby or Rails 學(xué)習(xí)總結(jié) 1

Qo_Tn


第一章 學(xué)習(xí)

1.1 Ruby

ruby 特性

弱類型 語(yǔ)言

1.3 下載安裝Ruby 和 Rails

終端 命令 :

安裝 rails gem install rails

1.4 開發(fā)工具 RubyMine

知了破解版

1.5 手動(dòng)編譯Ruby程序

終端 命令:

編譯: ruby 路徑+**
檢查代碼: ruby -c 文件名.rb
打開警告: ruby -w 文件名.rb
執(zhí)行字面腳本:ruby -e 文件名.rb
在行模式下運(yùn)行:ruby -l 文件名.rb

ruby -e 'print "Hello";print "Ruby"'
ruby -le 'print "Hello";print "Ruby"'

組合命令

-cw -le

1.6 實(shí)現(xiàn)計(jì)算器

puts "Please input Numberl:"
number1=gets
puts "Please input a operator(+,-,*,/):"
op=gets
puts "Please input Number2:"
number2=gets

case op.chomp
  when "+"
    result=number1.to_i+number2.to_i
  when "-"
    result=number1.to_i-number2.to_i
  when
    result=number1.to_i*number2.to_i
  when
    result=number1.to_i/number2.to_i
end

puts "Result:#{number1.chomp}#{op.chomp}#{number2.chomp}=#{result}"

第二章學(xué)習(xí)

2.1 常量的使用

定義方法(字母大寫)

'常量名(大寫)"='值'

相同名 警告錯(cuò)誤,報(bào)錯(cuò)

例子:

PLANT=200
CORPSE=10                                       
puts "僵尸進(jìn)攻一次,植物的生命是:"+(PLANT-CORPSE).to_s
$!

2.2 變量的使用

定義變量

局部變量必須以小寫字母或者下劃線開頭
局部變量 有自己的作用域

例如:

class Test
  _info="我是在類中被定義的局部變量"
  puts _info
end

module ModelInfo
  _info="我是被定義的模塊中的局部變量"
  puts _info
end

def info
  _info="我是被定義的方法中的局部變量"
  puts _tinfo
end

全局變量

  1. 作用于全局,任何地方都可以定義
  2. 可以在類中訪問(wèn),也可以在方法中訪問(wèn)
  3. 全局變量以“$”開頭

例如:

$info="我是被定義的全局變量,是最頂層的變量,我的Fans最多"

def infoQ
  tinfo="我是被定義的局部變量"
  puts tinfo
  puts $info
end

module ModelInfoQ
  _info="我是被定義的模塊中的局部變量"
  puts _info
  puts $info
end

class TestQ
  _info="我是在類中被定義的局部變量"
  puts _info
  puts $info
end

puts $info  
全局變量 說(shuō)明
$! 最近一次的錯(cuò)誤信息
$@ 錯(cuò)誤產(chǎn)生的位置
$_ gets最近讀的字符串
$. 解釋器最近讀的行數(shù)
$& 最近一次與正則表達(dá)式佩佩的字符串
$~ 作為字表達(dá)式組的最近一次匹配
$n 最近匹配的第那個(gè)子表達(dá)式
$= 是否區(qū)分大小寫的標(biāo)志
$/ 輸入記錄分隔符
$\ 輸出記錄分隔符
$0 Ruby腳本文件名
$* 命令行參數(shù)
$$ 解釋器進(jìn)程ID
$? 最近一次執(zhí)行的子進(jìn)程退出狀態(tài)

2.3 數(shù)據(jù)類型的使用

數(shù)據(jù)類型

三大數(shù)據(jù)類型 (數(shù)值型、范圍、符號(hào))

數(shù)值型:整數(shù)、浮點(diǎn)數(shù)

整數(shù):Fixnum、Bignum

新版本 2的30次方不在區(qū)分 .class 統(tǒng)一打印 Integer

浮點(diǎn)型

帶有小數(shù)點(diǎn)的字符串,例如:f=3.12c

范圍 ('..' 或 '...')

a..b 或 a....b

a..b 定義的是從值a到值b的范圍,包括值a,值b以及值a,值b中間的值
a...b 定義的是從值a到值b的范圍,包括值a,以及值a,值b中間的值,但不包括值b
Ruby 中,范圍是一個(gè)對(duì)象,是Range類的實(shí)例。

迭代器(regect、select、each)

regect:
將該范圍轉(zhuǎn)換成一個(gè)數(shù)組,并刪除掉滿足條件的元素。
select:
將該范圍轉(zhuǎn)換成一個(gè)數(shù)組,只選擇滿足條件的元素。
each:
輸出迭代范圍中的每個(gè)元素。

符號(hào)

符號(hào)也是一個(gè)對(duì)象.
符號(hào)對(duì)象是一個(gè)字符串,一個(gè)方法,一個(gè)類或者一個(gè)標(biāo)識(shí)符的內(nèi)部表示形式。
創(chuàng)建符號(hào)對(duì)象就在對(duì)象名前面加上一個(gè)冒號(hào)':'就可以了。
只要對(duì)象名相同,則產(chǎn)生的符號(hào)對(duì)象就相同。
字符串和符號(hào)對(duì)象之間是一一對(duì)應(yīng)的。
字符串和符號(hào)對(duì)象就可以通過(guò)to_s和to_sym來(lái)進(jìn)行相互轉(zhuǎn)換。

例如:

dcy="我是你的忠實(shí)粉絲啊"
ly=:"我是你的忠實(shí)粉絲啊" 
puts dcy.to_sym==ly 
puts ly.to_s==dcy   
返回:
true
true

符號(hào)對(duì)象還可以用 %s{表示法} 來(lái)創(chuàng)建

例如

dcy="我是你的忠實(shí)粉絲啊"
ly=:dcy
dcyandly=%s{dcy}
puts ly==dcyandly
返回 true

2.4 算術(shù)運(yùn)算符和賦值運(yùn)算符

算數(shù)運(yùn)算符

全局變量 說(shuō)明 計(jì)算 結(jié)果
+ 加號(hào) Z=2+1 Z的結(jié)果是:3
- 減號(hào) Z=2-1 Z的結(jié)果是:1
* 乘號(hào) Z=2*3 Z的結(jié)果是:6
/ 除號(hào) Z=6/3 Z的結(jié)果是:2
% 求余 Z=5%2 Z的結(jié)果是:1
** 乘方運(yùn)算 Z=5**2 Z的結(jié)果是:25

賦值運(yùn)算符

運(yùn)算符 |   說(shuō)明  |   計(jì)算  |   結(jié)果   |

----------|:----------:|----------|----------|
= | 賦值 | Z=1 | Z的結(jié)果是:1 |
+= | 加法賦值 | Z=1, Z+=1 | Z的結(jié)果是:2 |
-= | 減法賦值 | Z=3, Z-=1 | Z的結(jié)果是:2 |
*= | 乘法賦值 | Z=2, Z*=3 | Z的結(jié)果是:6 |
/= | 除法賦值 | Z=7, Z/=3 | Z的結(jié)果是:2 |
%= | 求余賦值 | Z=2, Z%=2 | Z的結(jié)果是:0 |
**= | 乘方賦值 | Z=2, Z**=2 | Z的結(jié)果是:4 |

2.5 位運(yùn)算符的使用

位運(yùn)算符

首先將十進(jìn)制的數(shù)字轉(zhuǎn)換成二進(jìn)制,然后才能進(jìn)行按位運(yùn)算。
位運(yùn)算符是對(duì)整數(shù)數(shù)組的位進(jìn)行邏輯運(yùn)算。

位運(yùn)算符 說(shuō)明 計(jì)算 結(jié)果
& 按位"與" Z=10&12 Z的結(jié)果是:8
^ 按位"異或" Z=10^12 Z的結(jié)果是:6
按位"或" Z=10 12 Z的結(jié)果是:14
~ 按位"非" Z=~10 Z的結(jié)果是:-11
<< 按位向左移位 Z=12<<2 Z的結(jié)果是:48
>> 按位向右移位 Z=10>>2 Z的結(jié)果是:2

除了“~”是單目運(yùn)算符,即需要一個(gè)操作數(shù),而其他的都是雙運(yùn)算符,即需要兩個(gè)操作數(shù)。

2.6 比較運(yùn)算符和邏輯運(yùn)算符

比較運(yùn)算符

比較運(yùn)算符 說(shuō)明
> 大于
< 小于
<= 小于或者等于
>= 大于或者等于
== 等于
!= 不等于
<=> 比較兩個(gè)對(duì)象,分別返回1,0和-1
=== 當(dāng)普通對(duì)象處于運(yùn)算符的左邊時(shí),該運(yùn)算符與“==”功能相同; 但左邊的對(duì)象是一個(gè)Range對(duì)象,且右邊對(duì)象包還在該Range內(nèi)時(shí),返回true,否則返回false
=~ 正則表達(dá)式匹配
!~ 正則表達(dá)式不匹配

邏輯運(yùn)算符

邏輯運(yùn)算符 說(shuō)明
and 按位"與"
or 按位"異或"
not 按位"或"
&& 邏輯"且"
| 邏輯"或"
! 邏輯"非"

2.7 三目運(yùn)算符的使用

第一個(gè)操作數(shù)為條件,如果第一個(gè)操作數(shù)成立,則返回一個(gè)值,否則返回另一個(gè)值。

例子:condition?true_value:false_value

2.8 表達(dá)式的返回值

表達(dá)式是由數(shù)字、運(yùn)算符、數(shù)字分組符號(hào)(括號(hào))、自由變量和約束變量等排在一起來(lái)求數(shù)值的組合。
在Ruby語(yǔ)言中,常量、變量、各種字面值、相關(guān)計(jì)算、if或者while等控制語(yǔ)句、類和方法的定義都可以稱為是表達(dá)式。
表達(dá)式的返回值無(wú)非就是有兩種: 一種是有返回值的,另一種是無(wú)返回值的。

例:

score=569
res=if score>600
      score.to_s+"考上復(fù)旦沒(méi)問(wèn)題"
    else
      score.to_s+"分,我很慚愧,我落榜了!"
    end
puts res

例2:

score1=596
res=while score1<600
      puts "我的分?jǐn)?shù)差"+score.to_s+"不到六百"
      score+=1
    end
puts res+"的值"

2.9 并行賦值和嵌套賦值

  1. 并行賦值

    • 交換兩個(gè)變量值,無(wú)需第三個(gè)變量。
    • 兩邊變量、值不等同,多余的會(huì)被設(shè)置為nil或忽略
    • 左邊以*為前綴, 表示所有對(duì)應(yīng)該變量的值以及后面的值將會(huì)組成一個(gè)數(shù)組,并賦給這個(gè)變量。
    • 右邊以*為前綴, 則會(huì)將這個(gè)數(shù)組拆開,按元素的相應(yīng)位置進(jìn)行并行賦值。
      例如:
    c,d="我是變量c","我是變量d"
    puts "交換前的變量c"+c,"交換后的變量d"+d
    c,d=d,c
    puts "交換后的變量c"+c,"交換后的變量d"+d
    
    tianqi=["春天","夏天","秋天","冬天"] #(創(chuàng)建的數(shù)組)
    daibiao=["cyr代表溫暖的春天(77·F)","wdc代表炎熱的夏天(99`F)","wz代表涼爽的秋天(59·F)","yyl代表冷酷冬天(41·F)"]
    a,b=tianqi
    puts "a代表的是"+a,"b代表的是"+b
    a,*b=daibiao
    puts "a代表的是"+a+"\n數(shù)組b代表的是",b
    a,b="風(fēng)雨哈佛路",*tianqi
    puts a,b
    
  2. 嵌套賦值

    • 把左邊的一些變量用括號(hào)括起來(lái),形成一個(gè)變量列表;與之對(duì)應(yīng)的右邊的值用中括號(hào)括起來(lái)形成一個(gè)子并行賦值的列表。

    例如:

    tianqi=["春天","夏天","秋天","冬天"]
    b,(c,d),e=tianqi
    puts "輸出的b是"+b.to_s,"輸出的c是"+c.to_s,"輸出的d是"+d.to_s,"輸出的e是"+e.to_s
    b,(c,*d),e="春天",["夏天","不冷不熱天","秋天"],"冬天"
    puts "b="+b.to_s,"c="+c.to_s,d,"e="+e.to_s
    

2.10 條件語(yǔ)句

  1. 條件語(yǔ)句

    • if (條件) then 代碼塊1 elseif (條件n) 代碼塊n else 代碼塊n+1 end
    • if 修飾語(yǔ)句
      例如:
    str=1
    if (str==1)
        puts "1月代表的是春天: 花香鳥語(yǔ)飄滿村。細(xì)聽(tīng)來(lái),句句是鄉(xiāng)音。"
    end
    
    month=2
    mothinfo="春天"
    if (month<3)
    puts "2月份是:"+mothInfo
    
    • unless 如果...不,除非,除...之外 的意思。
    • unless (條件) then 代碼塊1 else 代碼塊2 end
    a=2
    unless a**5==32 then
        puts "a的5次方不是32"
    else
        puts "a的5次方是32" 
    end
    
    • case語(yǔ)句
    case 表達(dá)式        
        when 常量1,常量2...常量3 then
    代碼塊1  
        when 常量4,常量5...常量n then    
    代碼塊2        
    else    
    代碼塊3   
    end                 
    
    num=6
    case num    
        when 6
        puts "今天是周末"
        else
            puts "今天不是周末"
    end
    
    month=6
    case month
        when 1,2,3
            puts "春意盎然"
        when 4,5,6
            puts "烈日驕陽(yáng)"
        when 7,8,9
            puts "秋高氣爽"
        when 10,11,12
            puts "冬雪棉被"
        else
            puts "該月份已超出程序可以計(jì)算的范圍"
    end
    

2.11 循環(huán)語(yǔ)句

  1. while 循環(huán)語(yǔ)句

    • while (條件) do 代碼塊 end
    row=1
    while (row<=9) do
        row=row+1
        puts "第"+(row-1).to_s+"次被打印的是:"+row.to_s
    end
    
  2. until 循環(huán)語(yǔ)句

    • 與while 語(yǔ)句作用相反
    row=0
    flh=["紅兒","橙兒","黃兒","綠兒","青兒","藍(lán)兒","紫兒"]
    until (row>=7) do
        flh.each do |h|
            row=row+1
            puts "王母娘娘的第"+row.to_s+"個(gè)女兒的名字是:"+h.to_s
        end
    end 
    
  3. for...in 循環(huán)語(yǔ)句

    • for 自定義名稱 in Array|Hash do 代碼塊1 end
    • for...in 語(yǔ)句主要是遍歷數(shù)組和Hash對(duì)象的元素
    shiren=["蒹葭蒼蒼","白露為霜","所謂伊人","在水一方","乘興見(jiàn)之","臉胖且長(zhǎng)","乘興會(huì)之","腰如水缸"]#創(chuàng)建數(shù)組
    for shiju in shiren do
        puts shiju
    end
    
  4. 迭代器

    • 主要用于將數(shù)組、Hash對(duì)象和普通對(duì)象的變量進(jìn)行迭代輸出。
    • array.each do |定義的變量名| 代碼塊 end
      例如:
    names=["琵琶語(yǔ)","東風(fēng)破","小酒窩","擦身而過(guò)"]
    names.each do |name|
        puts name
    end 
    
  5. loop

    • loop 是一個(gè)最基本的迭代器,使用loop語(yǔ)句可以執(zhí)行循環(huán)功能,但是必須注意的是: 使用loop語(yǔ)句進(jìn)行循環(huán)時(shí),程序會(huì)無(wú)限次的循環(huán)指定的代碼,因此必須使用break語(yǔ)句來(lái)結(jié)束這個(gè)循環(huán)。

2.12 跳轉(zhuǎn)語(yǔ)句

  1. break、next、redo、return
    • break 跳出整個(gè)循環(huán),嵌套中跳出嵌套(一層)
    • next 結(jié)束循環(huán)語(yǔ)句,next只終止當(dāng)前的循環(huán),進(jìn)行下一個(gè)循環(huán)
    • redo 類似于next,不同的是,使用redo 語(yǔ)句,不用檢查循環(huán)條件是否成立,就執(zhí)行下一次循環(huán)。
    • return 用來(lái)結(jié)束循環(huán)語(yǔ)句,但是return 主要用來(lái)結(jié)束一個(gè)方法,并且針對(duì)這個(gè)方法有返回值。
例如: 

```
i=0
loop{
    puts "i的值是"+i.to_s
    i+=1
    if (i>=3)
        break
    end
}
puts "--------------------------------------------------------------"
music=1
while (music<=5) do
    if (music==5)
        music+=1
        next
    end
    puts "《簡(jiǎn)愛(ài)》這首歌曲已循環(huán)播放了"+music.to_s+"次"
    music+=1
    yinyue=1
    while (yinyue<=3) do
        if (yinyue==2) 
            yinyue+=1
            next
        end
        puts "《曲終人散》這首音樂(lè)已經(jīng)循環(huán)播放了"+yinyue.to_s+"次"
        yinyue+=1
    end
end
puts "--------------------------------------------------------------"
i=1
while (i<=5) do
    if (i==5)
        i+=1
        redo
    end
    puts "這是第"+i.to_s+"次循環(huán)"
    i+=1    
end
puts "--------------------------------------------------------------"

def search(weatherName)
    weathers=["春天","夏天","秋天","冬天"]
    for weather in weathers do
        puts weather
        if (weather==weatherName) then
            return true
        else
            return false
        end
       end
end
if search("春天") then
    puts "這個(gè)月的天氣是春天"
else
    puts "這個(gè)月的天氣不是春天"
end

```
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Qo_Tn 第三章學(xué)習(xí) 3.1 創(chuàng)建字符串 String:?jiǎn)我?hào)或雙引號(hào) 創(chuàng)建。單引號(hào)字符串 只能進(jìn)行最少替換。雙...
    Qo_Tn閱讀 156評(píng)論 0 0
  • 在C語(yǔ)言中,五種基本數(shù)據(jù)類型存儲(chǔ)空間長(zhǎng)度的排列順序是: A)char B)char=int<=float C)ch...
    夏天再來(lái)閱讀 4,044評(píng)論 0 2
  • 這是16年5月份編輯的一份比較雜亂適合自己觀看的學(xué)習(xí)記錄文檔,今天18年5月份再次想寫文章,發(fā)現(xiàn)簡(jiǎn)書還為我保存起的...
    Jenaral閱讀 3,144評(píng)論 2 9
  • 學(xué)習(xí)C語(yǔ)言程序設(shè)計(jì)都會(huì)用到高等數(shù)學(xué)知識(shí)和計(jì)算機(jī)基礎(chǔ)理論知識(shí)。 使用可變參數(shù)應(yīng)該有以下步驟: 1)首先在函數(shù)里定義一...
    皓小天閱讀 6,062評(píng)論 0 2
  • 最近終于把《云邊小賣部》看完了,不知道是年齡越來(lái)越大了還是淚點(diǎn)太低,從王瑩瑩生病到她去世,我一直哭到結(jié)尾。像王鶯鶯...
    思宇A(yù)nne閱讀 415評(píng)論 2 2

友情鏈接更多精彩內(nèi)容