中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Ruby 2.4有什么新特征

發布時間:2021-07-07 17:42:36 來源:億速云 閱讀:148 作者:chen 欄目:編程語言

本篇內容主要講解“Ruby 2.4有什么新特征”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“Ruby 2.4有什么新特征”吧!

按照過去幾年的傳統, Ruby核心團隊在圣誕節發布了新的Ruby版本。 我將在這里總結Ruby 2.4中一些有趣的新函數。

以前的: Ruby 2.3 。

Numbers

Fixnum  Bignum 已統一為Integer類。

到目前為止,我們有兩個用于存儲整數的類- Fixnum(表示小整數), Bignum (表示超出此范圍的數字)。 但是,這些是實施細節 程序員在編寫代碼時無需擔心。

這兩個類已由單個 Integer 類代替。 以前, Integer 是這兩個類的超類, 但現在 Fixnum  Bignum 都是Integer

# 2.342.class      #=> Fixnum(2**62).class #=> Bignum# 2.442.class      #=> Integer(2**62).class #=> IntegerFixnum == Integer #=> trueBignum == Integer #=> true
  • 函數#12005:將Fixnum和Bignum統一為整數

  • Tanaka Akira的幻燈片

  • Ruby 2.4將Fixnum和Bignum統一為Integer (BigBinary博客)

新的Integer#digits方法

42.digits  #=> [2, 4]

浮點修飾符的精度

Float方法,例如#ceil #floor #truncate #round 采用可選參數設置精度。

1.567.round       #=> 21.567.round(2)    #=> 1.57123.456.round(-1) #=> 120

Float#round默認行為保持不變

這不是真的改變, 但是默認行為的這種變化最初使它成為一種預覽版本, 后來又恢復了。

默認情況下,#round 使用上舍入行為,即。 1.5將四舍五入為2。 新的行為是使用銀行家的四舍五入,將四舍五入到最接近的偶數。 這可能會導致許多現有應用程序中依賴于上舍入四舍五入的錯誤, 因此保留了原始默認設置。

# suggested behavior1.5.round  #=> 22.5.round  #=> 2# actual behavior1.5.round #=> 22.5.round #=> 3

Float#round選項

即使恢復了從最近到最近的變化, Float#round 中引入了新選項 允許您顯式設置要使用的舍入類型。

2.5.round               #=> 32.5.round(half: :even)  #=> 22.5.round(half: :down)  #=> 22.5.round(half: :up)    #=> 3

binding.irb

我非常喜歡 binding.pry 方法的pry gem,該方法可以在運行代碼時打開REPL。 IRB現在已經引入了此函數,并且當ruby遇到 binding.irb 時,ruby現在會打開一個REPL。

Hash

Hash#compact

此方法以及bang版本的#compact!, 從哈希中刪除值為nil的鍵。

{ a: "foo", b: false, c: nil }.compact#=> { a: "foo", b: false }

Hash#transform_values

將塊應用于哈希中的每個值。 還提供了用于修改現有哈希的#transform_values!方法。 文檔中的示例:

h = { a: 1, b: 2, c: 3 }
h.transform_values {|v| v * v + 1 }  #=> { a: 2, b: 5, c: 10 }
h.transform_values(&:to_s)           #=> { a: "1", b: "2", c: "3" }

Strings,Symbols和IO

字符串支持Unicode大小寫映射

到目前為止,Ruby僅對ASCII字符執行大小寫轉換。 String Symbols 現在已擴展為可以使用unicode字符。

# 2.3"Türkiye".upcase   #=> "TüRKIYE""TüRK?YE".downcase #=> "türk?ye"# 2.4"Türkiye".upcase   #=> "TüRKIYE""TüRK?YE".downcase #=> "türki?ye"
  • 函數#10085:將非ASCII大小寫轉換添加到String#upcase,#downcase,#swapcase,#capitalize

指定字符串緩沖區大小

String.new現在允許capacity參數 指定緩沖區的大小。 這將帶來性能上的好處 當字符串將被多次連接時。

String.new('foo', capacity: 1_000)

Symbol#match現在類似于 String#match

Symbol#match用于返回匹配位置, 而 String#match 返回了 MatchData 對象。 這已在2.4中修復,現在都返回 MatchData 

# 2.3:hello_ruby.match(/ruby/) #=> 6# 2.4:hello_ruby.match(/ruby/) #=> #<MatchData "ruby">

IO#gets和其他方法會獲得斷斷續續的標志

現在,您可以添加一個可選的 chomp:true 標志到 #gets #readline #each_line #readlines  IO.foreach 

# In 2.3, you did this
foo = gets.chomp

# 2.4
foo = gets(chomp: true)

正則表達式

Regexp#match?

此新方法返回true或false,而不更新$?全局變量。 由于它不會創建 MatchData 對象或更新 $?對象, 它的效果要優于#match 

/foo/.match?('foo')  #=> true$~                   #=> nil

Regexp#named_captures

返回表示有關命名捕獲的信息的哈希。

/(?<fname>.+) (?<lname>.+)/.match('Ned Stark').named_captures#=> {"fname"=>"Ned", "lname"=>"Stark"}

Enumerable

Enumerable#sum

(1..5).sum         #=> 15%w(a b c).sum('')  #=> "abc"

文件和目錄

#empty?方法已添加到 Dir FilePathname

Dir.empty?('path/to/some/dir')     #=> trueFile.empty?('path/to/some/file')   #=> truerequire 'pathname' # Needed to use Pathname classPathname.new('file-or-dir').empty? #=> true

Language特征

在Ruby 2.3中,您會收到語法錯誤 如果您在條件中嘗試了多次分配。 它已改為警告。

# 2.3
if (a,b = [1,2]) then 'yes' else 'no' end
#=> SyntaxError: (irb):9: multiple assignment in conditional

# 2.4

if (a,b = [1,2]) then 'yes' else 'no' end
#=> warning: found = in conditional, should be ==
#=> 'yes'

if (a,b = nil) then 'yes' else 'no' end
#=> warning: found = in conditional, should be ==
#=> 'no'

到此,相信大家對“Ruby 2.4有什么新特征”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

永年县| 炉霍县| 石家庄市| 奉贤区| 晋宁县| 化隆| 鹤岗市| 库伦旗| 博乐市| 宁陕县| 胶州市| 滦平县| 恩施市| 华池县| 蒙城县| 定日县| 称多县| 鸡西市| 云南省| 南溪县| 郑州市| 日照市| 南和县| 岑巩县| 富锦市| 长兴县| 颍上县| 马龙县| 五家渠市| 郧西县| 无棣县| 尚志市| 邢台县| 白山市| 新建县| 大埔区| 温州市| 来凤县| 江津市| 墨江| 应城市|