Ruby & Rails程序员Ruby

02.Ruby學習分享之數字和文本

2017-03-23  本文已影响68人  清水川崎

由於Ruby是一門完全面向對象的編程語言,所以它的所有類型都是基於Object,包括數字也算。


下面來介紹以下數字的常用方法

Ruby聲明變量是不需要聲明變量的類型的!Ruby這一特性並不奇怪,Swift也有用到,這種特性叫做鴨子類型(Dock Type)。意思是凡是只要滿足鴨子大部分行為的都是鴨子,比如只要是水裡游的、天上飛的都是屬於鴨子!

聲明一個叫a的變量(注:Ruby中的注釋用#,打印可以使用put,put帶自動換行,也可以簡寫為p,print也可以但是不會自動換行)

a=3

# 打印數字的類型

p a.class

(注:Ruby中帶?的方法都會返回一個bool值。true或者false)

#判斷一個數是否為偶數

p a.even?

#  判斷一個數是不是奇數

pa.odd?

#  把一個數字轉換為字符串

b=a.to_s

p b

#  重複多遍做某件事情

(注:這裡的times其實是指迭代器,以後我的文章會提到!{}內為block代碼塊)

3.times {p'love!'}

#  保留小數位數,括號內填寫保留小數的位數

p 4.3546457.round(2)


接下來說下字符串相關的一些方法

字符串定義很簡單,比如下面這樣

a = 'abc'

b = "abc"

單引號和雙引號都可以聲明字符串,單引號的運行效率比雙引號高,雙引號比單引號可以做插值操作。

c='something'

p "do#{c}"

Ruby中的字符串也和C語言一樣,也可以看作字符數組。比如我們對其做下列操作

a = 'asdf'

a[0]  = 'b'

p a

在Ruby中打印某些符號需要使用\來轉譯

p"aaaa\'ssss\'"

實際運行效果如下

"sdff''sdf'sdgf"

定義字符串的話還可以使用下面兩種

p%q(sdff''sdf'sdgf)

p%Q(sdff''sdf'sdgf)

%q和%Q都不需要轉譯符號, %q對應單引號字符串,而Q對應雙引號字符串

定義多行字符串,Ruby還有專用方法

p <<-UD

sdfgsdgdfhfgjghkgshfcijasdhfkdshf

UD

-UD和UD可以替換為任意字母,不過前後必須保持一致才行,而<<可以看作追加,下面的數組介紹篇,我會提到。

Ruby中有一些方法方法名前面都一致,但是有的帶!號,有的不帶,區別在於,帶!的方法屬於危險方法,也就是說會改變變量本身的值。

#  翻轉字符串

p c.reverse

Ruby在調用方法的時候可以使用()也可以不使用,比如下面的

#  判斷字符串是否包含一個字符

p c.include? 's'     

p c.include?('s')

#  求字符串的長度

p c.size

#  判斷某個字符在字符串中的位置

p c.index 'h'

#  替換某個字符為另一個字符

p c.sub 's','b'

Ruby也有自己的命名規則

變量,symbol,方法使用蛇形命名,採用全小寫,多個單詞使用_隔開

# variable,symbol,method:snake_case

常量使用全大寫,多個單詞也是使用_隔開

#  constant:CONST_FOD

類名使用駝峰命名

#classname:CamelCase

文件名也是用蛇形命名,採用全小寫,多個單詞使用_隔開

#  file name:file_name.rb

方法命名的一些規則

一般方法命名採用全小寫,多個單詞使用_隔開

#  normal method:normal_method

有返回值類型的命名尤其返回bool類型的值,需要加一個問號

#  predicate method:even?

危險方法類型的命名需要加一個!

#  dangerous method:reverse!

#  把字符串變為symbol

p c.to_sym

很多人不知道symbol是什麼意思,symbol可以理解為一旦定義就不會被改變的那種量。在Ruby中,我們一般經常使用的特定值會使用symbol命名。symbol在Ruby中的數據結構查找是很快的,並且不會被Ruby的垃圾回收機制回收。一般我們會把它作為Hash的key。Hash可以看做OC中的字典、Java中的Map,是一種以一對key-value鍵值對組成的數據結構。


給大家出兩道題吧

第一道:判斷一個字符串是否是回文,例如abcba,這種正著讀倒著讀都是一致的

第二道:找出一個字符串偶數位的字母,例如abcd,輸出b和d。


上一篇 下一篇

猜你喜欢

热点阅读