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
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...