Ruby:基本語法

下面,我要開始學(xué)習(xí)Ruby基本語法了证芭,最近忙的只有晚上能學(xué)一會(huì)了瞳浦。

感覺身體被掏空

變量

  • 局部變量:英文字母或_開頭(注意關(guān)鍵字
  • 全局變量:$開頭(不推薦
  • 實(shí)例變量:@開頭
  • 類變量:@@開頭
  • 偽變量:nil, true, false, self
  • 預(yù)定義變量

常量

大寫字母開頭(可以修改,但有警告)

多重賦值

  • 合并賦值
>> a,b,c=1,2,3
>> p [a,b,c]
[1, 2, 3]       # 挨個(gè)賦值
>> a,b,c=1,2
>> p [a,b,c]
[1, 2, nil]     # 缺少的用nil
>> a,b,c=1,2,3,4
>> p [a,b,c]
[1, 2, 3]       # 多余的丟棄
>> a,b,*c=1,2,3,4
>> p [a,b,c]
[1, 2, [3, 4]]  # 未分配的值封裝為數(shù)組賦給*變量
>> a,*b,c=1,2,3,4
>> p [a,b,c]
[1, [2, 3], 4]  # 同上
>> 

置換變量:a,b = b,a(厲害了废士,word哥=辛省)這個(gè)666,我之前都沒見過這種用法啊

  • 多重賦值還有更多的用法(提取數(shù)組中的數(shù)據(jù))官硝,這里就不贅述了

輸出語句

  • print
  • puts:自動(dòng)在每個(gè)字符串末尾加換行符
  • p:原樣輸出不進(jìn)行轉(zhuǎn)義
  • pp:以換行調(diào)整輸出結(jié)果

通過程序來看一下:

?  ~ irb --simple-prompt 
>> print "123\n","123"
123
123
=> nil
>> puts "123","123"
123
123
=> nil
>> p "123\n","123"
"123\n"
"123"
=> ["123\n", "123"]
>> 

可以看出上面的結(jié)論矗蕊,同時(shí)也可以看出p方法與另外兩個(gè)方法不同(注意返回值


# 我為什么要加橫線呢,因?yàn)樯线吺俏易蛲砩蠈懙?/p>

忍住

控制語句

  • 順序控制
  • 條件控制

if - then - (elseif-then/else) - end(條件為真執(zhí)行)
unless - then - (else) - end(條件為假執(zhí)行)
case - (when - then)* - else - end(when可指定多個(gè)值氢架,廣義相等)

  • 循環(huán)控制

for [var] in [start]..[end] do - end(for [var] in [object] do - end)
while - do - end
until - do - end(條件為假時(shí)執(zhí)行)
[number].times do |[var]| - end
[object].each do |[var]*| - end(([start]..[end]).each do |[var]| - end)
loop do - (break) - end

  • 異成悼В控制

begin - rescue [Exception] => [ex var] - ensure - end(類比try-catch-finally
使用raise拋出異常
可以使用retry指定重新回到begin處重新執(zhí)行(適當(dāng)?shù)?code>sleep

若不定義[ex var],則:
$! 表示最后發(fā)生的異常對(duì)象
$@ 表示最后發(fā)生異常的位置信息(=$!.backtrace

說明

  • 廣義相等===是指:相等岖研、同=~匹配卿操、右邊對(duì)象屬于左邊類 .etc.
    when即是使用===判斷,但when可以指定多個(gè)值
  • if/unless可以作為修飾:puts "a>b" if a>b
  • 循環(huán)控制:break/next/redo
  • do - end等同于{ - }:約定多行用前者孙援,寫于一行用后者
    10.times {|i| puts i}
  • 若整個(gè)方法體都被begin-end包括害淤,可以省略(只寫rescueensure

正則表達(dá)式

/pattern/ =~ "String"返回匹配索引位置或nil
/pattern/i表示不區(qū)分大小寫

=> ["joshua", "lbq", "ben"]
>> names.each do |name|
?> if /b/ =~ name  # nil與false表示假,其余均為真
>> puts name
>> end
>> end
lbq
ben
=> ["joshua", "lbq", "ben"]
>> 

方法

  • 實(shí)例方法(最常用)拓售,例如to_s
    對(duì)象能夠使用的實(shí)例方法是由所屬的類決定的
  • 類方法窥摄,例如Array.new
    調(diào)用類方法,可以使用::替代.
  • 函數(shù)式方法:沒有接受者础淤,例如print

方法定義

def [function] (args=default...) - return - end
def [function] (arg 1: default 1, arg 2: default 2, ..., **undefined) - end(推薦

返回真假值的方法以?結(jié)尾
參數(shù)個(gè)數(shù)不確定崭放,參數(shù)前加*
省略return則將最后一個(gè)表達(dá)式作為返回值(return表示返回nil)
帶塊方法:yield

補(bǔ)充:對(duì)于多個(gè)單詞組合的變量名
使用 _ 隔開各個(gè)單詞(變量名/方法名
單詞以大寫字母開頭(類名/模塊名

我看到的晚了,作業(yè)已經(jīng)寫完了[:cry]

庫與引用庫

require "lib"
# init ...
# call 

先到這里值骇,我去寫個(gè)作業(yè)去(感覺已經(jīng)可以做了莹菱,let me see 一 see)


類的創(chuàng)建(類名首字母大寫)

class - def initialize(args) - end(new方法調(diào)用) - (def [function])* - end
@[var]:實(shí)例變量
self變量

存取器

attr_reader
attr_writer
attr_accessor

attr_accessor: name等同于:

def name
  @name
end
def name=(value)
  @name = value
end

權(quán)限

public(函數(shù)默認(rèn)為public,initialize除外)
private(initialize默認(rèn)
protected

模塊

模塊創(chuàng)建(首字母大寫)

module - module_function: [function]* - end


語法太多吱瘩,請(qǐng)自行查看
推薦使用《Ruby基礎(chǔ)教程(中文第四版)》

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末道伟,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌蜜徽,老刑警劉巖祝懂,帶你破解...
    沈念sama閱讀 211,194評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異拘鞋,居然都是意外死亡砚蓬,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,058評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門盆色,熙熙樓的掌柜王于貴愁眉苦臉地迎上來灰蛙,“玉大人,你說我怎么就攤上這事隔躲∧ξ啵” “怎么了?”我有些...
    開封第一講書人閱讀 156,780評(píng)論 0 346
  • 文/不壞的土叔 我叫張陵宣旱,是天一觀的道長仅父。 經(jīng)常有香客問我,道長浑吟,這世上最難降的妖魔是什么笙纤? 我笑而不...
    開封第一講書人閱讀 56,388評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮组力,結(jié)果婚禮上省容,老公的妹妹穿的比我還像新娘。我一直安慰自己忿项,他們只是感情好蓉冈,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,430評(píng)論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著轩触,像睡著了一般。 火紅的嫁衣襯著肌膚如雪家夺。 梳的紋絲不亂的頭發(fā)上脱柱,一...
    開封第一講書人閱讀 49,764評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音拉馋,去河邊找鬼榨为。 笑死,一個(gè)胖子當(dāng)著我的面吹牛煌茴,可吹牛的內(nèi)容都是我干的随闺。 我是一名探鬼主播,決...
    沈念sama閱讀 38,907評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼蔓腐,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼矩乐!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,679評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤散罕,失蹤者是張志新(化名)和其女友劉穎分歇,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體欧漱,經(jīng)...
    沈念sama閱讀 44,122評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡职抡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,459評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了误甚。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片缚甩。...
    茶點(diǎn)故事閱讀 38,605評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖窑邦,靈堂內(nèi)的尸體忽然破棺而出擅威,到底是詐尸還是另有隱情,我是刑警寧澤奕翔,帶...
    沈念sama閱讀 34,270評(píng)論 4 329
  • 正文 年R本政府宣布裕寨,位于F島的核電站,受9級(jí)特大地震影響派继,放射性物質(zhì)發(fā)生泄漏宾袜。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,867評(píng)論 3 312
  • 文/蒙蒙 一驾窟、第九天 我趴在偏房一處隱蔽的房頂上張望庆猫。 院中可真熱鬧,春花似錦绅络、人聲如沸月培。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,734評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽杉畜。三九已至,卻和暖如春衷恭,著一層夾襖步出監(jiān)牢的瞬間此叠,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,961評(píng)論 1 265
  • 我被黑心中介騙來泰國打工随珠, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留灭袁,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,297評(píng)論 2 360
  • 正文 我出身青樓窗看,卻偏偏與公主長得像茸歧,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子显沈,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,472評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容