初識Ruby

Ruby

  • MRI : Ruby官方解釋器

安裝

Linux

    sudo apt-get install ruby

基本語法

  • irb :進(jìn)入Ruby命令行環(huán)境
  • puts和print的區(qū)別是,puts會自動在結(jié)尾加上換行符
  • 一切皆為對象芬迄,例如字符串厨疙、數(shù)字都是對象捡硅,有自帶很多的方法橱健,比如:
  •   "Hello Ruby".length
      "Hello Ruby".reverse
    
  • 嵌套調(diào)用: (字符串先翻轉(zhuǎn)浇揩,再大寫)
  •   "HelloWorld".reverse.upcase
    

Ruby變量

  • 本地變量 (Local Variable) name = "Hello"
  • 實(shí)例變量 (Instance Variable) @age = 29
  • 全局變量 (Global Variable) $app_path = "/usr/local/"
  • 常量 (Constant) VERSION = "v1.0"

Ruby Data Types

  • String :

      string_name = "Hello Ruby"
    
  • Number :

      num_age = 23
    
  • Array :

      array_sore = [12,52,89,45]
    
  • Boolean :

      boolean_is_pass = true
    
  • Hashes :

      hash_user = {:name => "nick", :age => 23}
      //查找
      => hash_user[:name]
      => nick
    
  • Symbols(符號) :

          //保存的也是字符串始藕,但通常是不變的字符串女淑,比如hash中的key瞭郑,一般value變但key不變,如上的:name
      :name
    

Ruby每個(gè)對象都有一個(gè)唯一的ID鸭你,并且提供.object_id方法查看

Ruby Object-Orirnted

  • 查看變量對象類型:

     變量名.class
     name = "Heelo World"
     name.class
     =>String
    
  • 調(diào)用對象的方法:

      變量名.方法名
      name.length
      name.reverse.upcase
    

Ruby Varivable Method

  • 有些方法返回修改的值屈张,有些方法直接修改變量

      exam_score = [32,65,51,4,89]
      //排序方法,沒有"!"不會修改原來數(shù)組的順序
      exam_score.sort
      //一般來說袱巨,Ruby中方法名稱以"!"結(jié)尾的阁谆,都是直接修改原始變量,要謹(jǐn)慎使用
      exam_score.sort!
    

變量可嵌入字符串中
在字符串中愉老,可通過#{變量名}應(yīng)用變量的內(nèi)容场绿,
只能使用在雙引號下

    name = "World"
    puts "Hello #{name} !"

Ruby 表達(dá)式 - 比較

  • = 賦值
  • == 比較是否一樣,并且對字符串的大小寫敏感
  • (> , < ) 大于小于
  • <=> 船型操作符 返回-1或0或1

表達(dá)式組合

可以使用&&或||進(jìn)行變大時(shí)組合(邏輯運(yùn)算)

還提供更自然的寫法:

  • && 邏輯與 = and
  • || 邏輯或 = or
  • 嫉入! 邏輯非 = not

Ruby - 條件判斷

在Ruby中焰盗,除了false和nil外,都被認(rèn)為是true

即使是返回0劝贸,也是為true

if 條件判斷語句
   ...
end


if 條件判斷語句
   ...
else
    ......
end


if 條件判斷語句 
   ...
elsif 條件判斷語句
    ......
else
    ...
end


unless 條件判斷語句姨谷,條件為假時(shí),執(zhí)行
    ...
end
  • Ruby Case
day = "Monday"
        case day
        when "Monday"
            puts "Fighting"
        when "Friday"
            puts "Oh Yeah!"
        end 

還可以這樣表示:

score = 99
        case score
        when 1..59 //代表一個(gè)范圍
            puts "Try Again"
        when 60..79
            puts "pass"
        when 80..99
            puts "Good Job!"
        end

Ruby 無盡循環(huán)

按Ctrl + c 強(qiáng)制打斷

loop do
    puts "I love Ruby"
end

條件循環(huán)

count = 0
loop do
    puts "I love Ruby"
    
    count += 1
    if count > 10 
        break;
    end
end
count = 0
while count < 10 //判定條件為真映九,until為假
    puts "I love Ruby"
    count += 1
end

Ruby更多的迭代器

//從1數(shù)到10梦湘,還可以引用這個(gè)值count
1.upto(10) do |count|
    puts "count to #{count}"
end

//從10數(shù)到1
10.downto(1) do |count|
    puts "down to #{count}"
end

//跳著數(shù)2個(gè)
1.step(10,2) do |count|
    puts "step to #{count}"
end

Ruby - 方法

  • 方法定義及調(diào)用
def 方法名
    ......
end

#方法定義,以小寫開頭
def say_love
    puts "I love Ruby"
end

#方法調(diào)用
say_love

#帶參數(shù)的方法定義
def say_love(name)
    puts "I love #{name}"
end

#帶參數(shù)的方法調(diào)用
say_love("Ruby")

def say_love(name,from)
    puts "I love #{name},from #{from}"
end

#調(diào)用
say_love("Ruby","Nick")
  • Ruby 還可以接受可變長度的參數(shù)
def 方法名(*arg)
    ......
end

帶變長參數(shù)的方法

def add_all(*num)
    sum = 0
    #數(shù)組的方法件甥,把輸入的參數(shù)當(dāng)做數(shù)組一個(gè)一個(gè)的賦給num求和
    num.each {|x| sum += x}
    return sum
end

add_all{1,2,3,4,5}
- Ruby 參數(shù)默認(rèn)值

def 方法名(arg1=默認(rèn)值...)
    ......
end

帶默認(rèn)參數(shù)的方法

def say_love(name="Ruby")
    puts "I love #{name}"
end

調(diào)用

say_love  #輸出 I love Ruby
say_love("Nick")  #輸出 I love Nick
- Ruby 方法返回值

每個(gè)方法都有一個(gè)返回值

**沒有return 指定返回對象時(shí)捌议,自動返回最后一行代碼結(jié)果**
def add_all(*num)
    sum = 0
    num.each{ |x| sum += x }
    return sum
end

定義一個(gè)空方法

def do_nothing
end
puts do_nothing.class 

# 就算是空方法也是會有返回值的,返回nil
# nil也是一個(gè)對象
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末引有,一起剝皮案震驚了整個(gè)濱河市瓣颅,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌譬正,老刑警劉巖宫补,帶你破解...
    沈念sama閱讀 206,378評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異曾我,居然都是意外死亡粉怕,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評論 2 382
  • 文/潘曉璐 我一進(jìn)店門抒巢,熙熙樓的掌柜王于貴愁眉苦臉地迎上來贫贝,“玉大人,你說我怎么就攤上這事≈赏恚” “怎么了崇堵?”我有些...
    開封第一講書人閱讀 152,702評論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長客燕。 經(jīng)常有香客問我鸳劳,道長,這世上最難降的妖魔是什么幸逆? 我笑而不...
    開封第一講書人閱讀 55,259評論 1 279
  • 正文 為了忘掉前任棍辕,我火速辦了婚禮,結(jié)果婚禮上还绘,老公的妹妹穿的比我還像新娘楚昭。我一直安慰自己,他們只是感情好拍顷,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,263評論 5 371
  • 文/花漫 我一把揭開白布抚太。 她就那樣靜靜地躺著,像睡著了一般昔案。 火紅的嫁衣襯著肌膚如雪尿贫。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,036評論 1 285
  • 那天踏揣,我揣著相機(jī)與錄音庆亡,去河邊找鬼。 笑死捞稿,一個(gè)胖子當(dāng)著我的面吹牛又谋,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播娱局,決...
    沈念sama閱讀 38,349評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼彰亥,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了衰齐?” 一聲冷哼從身側(cè)響起任斋,我...
    開封第一講書人閱讀 36,979評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎耻涛,沒想到半個(gè)月后废酷,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,469評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡抹缕,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,938評論 2 323
  • 正文 我和宋清朗相戀三年澈蟆,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片歉嗓。...
    茶點(diǎn)故事閱讀 38,059評論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖背蟆,靈堂內(nèi)的尸體忽然破棺而出鉴分,到底是詐尸還是另有隱情哮幢,我是刑警寧澤,帶...
    沈念sama閱讀 33,703評論 4 323
  • 正文 年R本政府宣布志珍,位于F島的核電站橙垢,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏伦糯。R本人自食惡果不足惜柜某,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,257評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望敛纲。 院中可真熱鬧喂击,春花似錦、人聲如沸淤翔。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,262評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽旁壮。三九已至监嗜,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間抡谐,已是汗流浹背裁奇。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留麦撵,地道東北人刽肠。 一個(gè)月前我還...
    沈念sama閱讀 45,501評論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像厦坛,于是被迫代替她去往敵國和親五垮。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,792評論 2 345

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

  • ruby簡介 Ruby 是一種開源的面向?qū)ο蟪绦蛟O(shè)計(jì)的服務(wù)器端腳本語言 ruby安裝(mac) 我們可以在終端中測...
    狂猿閱讀 376評論 0 0
  • 以前接觸多的編程語言都是C/C++杜秸、Java放仗、C#等,很少接觸腳本語言撬碟,冷不兜ぁ(突然)地接觸Ruby還讓我有點(diǎn)小激...
    Josaber閱讀 120評論 0 0
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法呢蛤,內(nèi)部類的語法惶傻,繼承相關(guān)的語法,異常的語法其障,線程的語...
    子非魚_t_閱讀 31,581評論 18 399
  • //Clojure入門教程: Clojure – Functional Programming for the J...
    葡萄喃喃囈語閱讀 3,618評論 0 7
  • 基礎(chǔ)1.r''表示''內(nèi)部的字符串默認(rèn)不轉(zhuǎn)義2.'''...'''表示多行內(nèi)容3. 布爾值:True银室、False(...
    neo已經(jīng)被使用閱讀 1,660評論 0 5