Ruby入門知識總結

来源:https://www.cnblogs.com/fish-101/archive/2019/01/12/10257565.html
-Advertisement-
Play Games

ruby入門掌握其實很簡單,下麵對我司主要使用的部分入門做一個簡單的歸納總結: 文章結構: 1、變數 2、操作符 3、if~else~end 、unless 4、數組(Array) 5、哈希(Hash) 6、迴圈(each do|變數|) 1、變數操作 變數分為:整數型(int);浮點型(float ...


ruby入門掌握其實很簡單,下麵對我司主要使用的部分入門做一個簡單的歸納總結:
本文的文章結構:
1、變數
2、操作符
3、if~else~end 、unless
4、數組(Array)
5、哈希(Hash)
6、迴圈(each do|變數|)

                                                                                                                                                                             1、變數

變數分為:整數型(int);浮點型(float);布爾型(bool);字元串型(string)

int型:1,2,3
float型:1.2
bool型:true/ false
string型:"abc"

不同類型間的轉換:
.to_f :轉為浮點型
.to_s:轉為字元串型
例如
p 123.to_s
=>"123"

變數分為:全局變數($),局部變數和類變數(@@),它們的作用範圍由大到小排列

                                                                                                                                                                                  2、對於變數而言含有的操作符

對於int和float,為倍數相乘,但是對於字元串,即為重覆幾次,例如:
str1 = "a"
p str1
3
=>"aaa"
對於字元串,+也有特殊意義,為字元串間的簡單拼接
②|| 或(一真全真)、&&且(一假全假) 、!非 (特別註意 nil為假)
③三目操作符:
口?口:口 問號前面的是布爾型的判斷,true的話執行第二個方塊的語句,false的話執行第三個方塊的語句
例如:
value =(nil ? 0 : 1)
p value
=>1
⑤== 表示判斷,兩側是否相等,相等為true,不相等為false
3、if語句的基本知識
if ~else~end 不要丟掉end哦!!!
例如:
num = 100
if num <100
p "數字小於100"
elsif num >100 #elsif 後面還是可以加判斷條件的
p "數字大於100"
else #else 就是指其他的,後面不能再加判斷條件
p "數字等於100"
end

=> "數字等於100"

if還能這樣用:
num = 100
p "數字等於100" if num =100 #if後面的判斷為真後,再去執行前面的語句
=> "數字等於100"

與if一樣同為判斷的還有一個方式:unless 用法就是unless後面的條件不成立,才會執行下一條語句,否則就跳到下一個判斷,因為邏輯比較繞,所以一般多於1個判斷的時候,就直接用if好了。

例如:
num = 50
p "數字小於100" unless num>100

                                                                                                                                                                                4、數組的基礎知識及方法

數組(Array)
創建一個新的數組可以這樣:arr = Array.new ,或者直接定義一個空的數組 :arr = [ ],這個中括弧就是數組的標誌。
①最重要的知識點就是 索引,就是數組所在的位置,它是有序的,在物理磁碟按照順序存儲,它跟python一樣,都是從0開始計數
arr = [1,2,3,4,5]
p arr[0]
=>"1" #拿出來一個元素,不是數組哦
p arr[-1] #取倒數第一個元素
=>"5"
②數組內的操作符:
加號(+)單純的將兩個數組連接,不做去重;
減號(-)用前一個數組減去後一個數組裡的東西,只對被減數做修改;
取並集“|”(可以看到,比對於變數的操作,少了一個豎杠);
取交集“&”(可以看到,比對於變數的操作,少了一個&);
數組間的拼接: “<<” 這個字元的意思是拼接,並不是將兩個數組簡單的拼接起來,這跟字元串中的用法不一樣,它是把箭頭後面的元素作為一個新的元素加到左邊的數組裡面去。
例如:
數組1 = ['1','2','3']
數組2 = ['1','3','4']
p 數組1 - 數組2
=>["2"]
p 數組1 + 數組2
=>["1", "2", "3", "1", "3", "4"]
p 數組1 | 數組2 #數組裡的取並集,是一個豎杠"|",而變數裡面是"||"
=>["1", "2", "3", "4"]
p 數組1 & 數組2 #你看,數組裡的取交集,是一個&
=>["1", "3"]

例如:
p ['1','2','3']<<["aaa"]
=> ['1','2','3',['aaa']]

方法:
.empty? #判斷是否為空,輸出結果為布爾型
a = ["a","b","c"]
p a.empty?
=>false

.include?("變數") #判斷是否含有某元素,輸出結果為布爾型
a = ["a","b","c"]
p a.include?("c")
=>true

.index("元素") #尋找某個元素的索引
a = ["a","b","c"]
p a.index("c")
=>2

.size #查詢數組的長度
a = ["a","b","c"]
p a.size
=>3

                                                                                                                                                                            5、哈希的基礎知識和方法

創建一個新的哈希可以這樣:hash = Hash.new ,或者直接定義一個空的哈希 :hash = {},這個中括弧就是哈希的標誌。
哈希是以鍵值對的形式存在的,表達方式有2種,我司常用的是{“a”=>“b”}形式,一個key可對應多個value,它們是在物理地址是不連續的,所以沒有索引的說法,而是通過key去查找對應的value,效率會高於數組。這個哈希其實就相當於python里的字典。
所以定位哈希的時候,是用key去定位的,hash[key ],例如:
hash= {"a"=>"b","c"=>"d"}
p hash["c"]
=>"d"

下麵簡列一下hash的方法:
empty? #判斷是否為空,輸出結果為布爾型
a = {}
p a.empty?
=>true

.include?("value") #判斷是否含有某元素,輸出結果為布爾型
hash= {"a"=>"b","c"=>"d"}
p hash.include?("f")
=>true

.size #查詢哈希的個數,記住,是以鍵(keys)為標準
hash= {"a"=>"b","c"=>"d"}
p hash.size
p=>2

.keys #這個方法是將哈希里的所有鍵取出來,組成1個數組
hash= {"a"=>"b","c"=>"d"}
p hash.keys
=>["a", "c"]

.value #這個方法是將值取出來,組成一個數組
hash= {"a"=>"b","c"=>"d"}
p hash.values
=>["b", "d"]

另外,哈希裡面的value,不一定是字元串,還有可能是數組,例如:
hash= {"a"=>["b","e"],"c"=>"d"},這樣都是允許的,如果我想定位到元素“e”,很簡單,如下操作就可以:
p hash["a"][1]
=>"e"
6、迴圈
迴圈首先簡單介紹三種方式:請記住都有end作為結尾哦!~並且這裡面的變數並沒有用""引號給引起來
①.each do |命名變數|
...
end
②.each_with_index do |元素,索引| #這裡命名變數,是2個變數。應用於數組,將數組的元素拿出來,並將其位置表示出來.特別需要註意的是,這裡面的變數並沒有用""引號給引起來
p 元素
p 索引+1
end
③0.upto (n) do |命名變數| #這個方法可以用來將數組(array)進行迴圈,且n>=0,當然,那個0也不是固定值,看你需要定位到哪個元素。而且既然有upto,當然也就有downto,這個不多說。記得凡是方法,都有".";中間都有空格!!
...
end
現在舉幾個例子熟悉一下:
對於數組的迴圈,取出裡面的所有元素,舉例如下:

arr = ["a", "b", "c"]
arr.each do |元素|
p 元素
end
=>"a"
"b"
"c"

arr = ["a", "b", "c"]
arr.each_with_index do |元素,索引|
p 元素
p 索引+1
end
=>"a"
1
"b"
2
"c"
3

arr = ["a", "b", "c"]
0.upto (2) do |索引|
p arr[索引]
end

=>"a"
"b"
"c"

對於哈希的迴圈,一種就是將每一個的key-value組成一個數組,並將其輸出。例如:

hash= {"a"=>["b","e"],"c"=>"d","dada"=>[1,2,3]}
hash.each do |內容|
p 內容
end

=>["a", ["b", "e"]]
["c", "d"]
["dada", [1, 2, 3]]

如果針對上面的哈希,我想要輸出形成的數組的特定值,比如第一個元素:

hash= {"a"=>["b","e"],"c"=>"d","dada"=>[1,2,3]}
hash.each do |內容|
p 內容[0]
end
=>"a"
"c"
"dada"

hash= {"a"=>["b","e"],"c"=>"d","dada"=>[1,2,3]}
hash.each do |內容|
p 內容[1][0]
end
=>["b", "e"]
"d"
[1, 2, 3]

hash= {"a"=>["b","e"],"c"=>"d","dada"=>[1,2,3]}
hash.each do |內容|
p 內容[1][1]
end
=>"e"
nil #由此可以看出,當索引超出了數組的長度時,不會報錯,而是nil
2

另一種就是輸出鍵“\n”值,但不組成數組,用的是.each do|鍵,值|,例如:

hash= {"a"=>["b","e"],"c"=>"d","dada"=>[1,2,3]}
hash.each do |鍵,值|
=>p 鍵
p 值
end

相信通過上面的簡要介紹,對於ruby語法的基礎是有了,繼續加油更新哦~~


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • LayaBox案例分享 小程式開篇(1) 不知不覺後端搬磚六年了,回想過去,什麼也沒留下,突然覺得是時候寫點什麼了。 為什麼我要選擇小程式呢,主要是覺得上手簡單,易於傳播,同時可以投放微信廣告為自己賺零花錢,何樂而不為。我的第一個小程式主要是想總結下這幾年的編程積累,同時分享出來。分為基礎內容和實戰 ...
  • 每天記錄自己在學校學到的點點滴滴,讓每天的生活過的更加充實!加油! 註:本次案例簡單實現購物選擇的功能! 實現效果:添加部分產品,左邊為勾選框,右邊為商品和數量選擇,數量可以增加或減少,只有覆選框勾選的時候,添加產品才可以顯示所需金額,下方為商品總價格! html代碼: Jquery代碼: 代碼到這 ...
  • nodejs代碼 // 導入WebSocket模塊: const WebSocket = require('ws'); // 引用Server類: const WebSocketServer = WebSocket.Server; // 實例化: const wss = new WebSocketS ...
  • <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv ...
  • 介紹 ES6,也叫ECMAScript2015(以下統稱ES6),是ECMAScript標準的最新版本。這個標準在2015年6月份被正式批准。ES6是js語言很有意義的一次更新,也是2009年ES5被標準化以來第一次重大的更新。主流javascript引擎中的這些新特性正在開發中。 ES6特性完整版 ...
  • npm i https://github.com/iconic/open-iconic.git -D 因為boostrap的css里刪除了圖標 分開了 我們在引入個呵呵。 下載:npm i [email protected] -D由於4.x版本icon文件分離出去所以還需要下載open-iconic: ...
  • 外觀模式隱藏系統的複雜性,並向客戶端提供了一個客戶端可以訪問系統的介面。它想現有的系統添加了一個介面,以隱藏系統的複雜性 ...
  • 反爬 / 封 IP 對於封 IP 的情況,可以分為幾種情況來處理: 首先尋找手機站點、App 站點,如果存在此類站點,反爬會相對較弱。 使用代理,如抓取免費代理、購買付費代理、使用 Tor 代理、Socks 代理等。 在代理的基礎上維護自己的代理池,防止代理浪費,保證實時可用。 搭建 ADSL 撥... ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...