Ruby 2.0 Preview 1釋出
Ruby 2.0的釋出經理Yusuke Endoh宣佈瞭如下幾件事:Ruby 2.0.0的直接特性已經凍結,Preview 1釋出,正式版的釋出日期是2013年2月24日。屆時正是Ruby的20週年紀念日,因此2.0版本選擇這個時間釋出也非常合適。
新特性的總結可以在Ruby的NEWS檔案及其問題跟蹤系統中找到。所有特性之中,Keyword Argument(關鍵字引數)和Refinement對Ruby程式設計師的影響是最大的:
Keyword Argument
不同於僅僅傳遞一個雜湊值作為方法引數,Ruby 2.0將完全支援關鍵字引數。下面是選自Ruby自身單元測試程式的一個程式碼片段:
[str, num]
end
def test_f1
assert_equal(["foo", 424242], f1)
assert_equal(["bar", 424242], f1(str: "bar"))
assert_equal(["foo", 111111], f1(num: 111111))
assert_equal(["bar", 111111], f1(str: "bar", num: 111111))
assert_raise(ArgumentError) { f1(str: "bar", check: true) }
assert_raise(ArgumentError) { f1("string") }
end 注意該特性只能用於有預設值的引數。關於新語法的更多例子以及新語法如何使用傳統引數,請參考Ruby的單元測試。
Refinement
refinement的目標是通過減少補丁的應用範圍使打動態補丁(monkey patching)更為安全。下面是由Matz給出的一個例子,MathN模組包含進來之後“/”操作符才能在Fixnum上使用:
refine Fixnum do
def /(other) quo(other) end
end
end
class Foo
using MathN
def foo
p 1 / 2
end
endYehuda Katz寫了一篇詳細的部落格文章來介紹如何將Refinement應用於實踐之中。Refinement目前已包含在Ruby 2.0分支中,但仍然可能因效能問題而被踢除(參見 最初請求特性的討論)。
新特性的總結可以在Ruby的NEWS檔案及其問題跟蹤系統中找到。所有特性之中,Keyword Argument(關鍵字引數)和Refinement對Ruby程式設計師的影響是最大的:
Keyword Argument
不同於僅僅傳遞一個雜湊值作為方法引數,Ruby 2.0將完全支援關鍵字引數。下面是選自Ruby自身單元測試程式的一個程式碼片段:
CODE:
def f1(str: "foo", num: 424242)[str, num]
end
def test_f1
assert_equal(["foo", 424242], f1)
assert_equal(["bar", 424242], f1(str: "bar"))
assert_equal(["foo", 111111], f1(num: 111111))
assert_equal(["bar", 111111], f1(str: "bar", num: 111111))
assert_raise(ArgumentError) { f1(str: "bar", check: true) }
assert_raise(ArgumentError) { f1("string") }
end 注意該特性只能用於有預設值的引數。關於新語法的更多例子以及新語法如何使用傳統引數,請參考Ruby的單元測試。
Refinement
refinement的目標是通過減少補丁的應用範圍使打動態補丁(monkey patching)更為安全。下面是由Matz給出的一個例子,MathN模組包含進來之後“/”操作符才能在Fixnum上使用:
CODE:
module MathNrefine Fixnum do
def /(other) quo(other) end
end
end
class Foo
using MathN
def foo
p 1 / 2
end
endYehuda Katz寫了一篇詳細的部落格文章來介紹如何將Refinement應用於實踐之中。Refinement目前已包含在Ruby 2.0分支中,但仍然可能因效能問題而被踢除(參見 最初請求特性的討論)。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/301743/viewspace-750228/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- .NET 7 Preview 1 已正式釋出View
- Ruby 3.1.0 釋出
- .NET Aspire Preview 4 釋出!View
- Visual Studio 2022 Preview 1 和.NET 6 Preview 5 正式釋出View
- FlutterBoost3.0釋出preview版本FlutterView
- 解讀釋出:.NET Core RC2 and .NET Core SDK Preview 1View
- Blazor WebAssembly 3.2.0 Preview 4 如期釋出BlazorWebView
- Groovy 2.0釋出
- Ruby 3.0.0釋出:Ruby3將比Ruby2快3倍
- 【翻譯】.NET 5 Preview5釋出View
- 【翻譯】.NET 5 Preview8釋出View
- 【翻譯】.NET 5 Preview7釋出View
- 現已釋出:Android 7.1 Developer PreviewAndroidDeveloperView
- Android Things Developer Preview 3釋出AndroidDeveloperView
- 釋出Android Things Developer Preview 4.1AndroidDeveloperView
- Android Things Developer Preview 2 釋出AndroidDeveloperView
- inMap 2.0 重磅釋出!
- Bundler 2.0 釋出
- Seam 2.0正式釋出
- MaxtoCode 2.0 7月1日釋出 測試版
- 微軟釋出了Visual Studio 2022 Preview 1 以及.NET 6 Preview 5微軟View
- 〔譯〕TypeScript 2.0 正式釋出TypeScript
- Vue.js 2.0釋出Vue.js
- HTTP/2.0 草案初稿釋出HTTP
- PyPy 2.0 alpha for ARM 釋出
- Ruby 2.0 有哪些新特性?
- Ruby 2系列首個穩定版 Ruby 2.0.0-P0釋出
- Build 2021 :正式釋出.NET 6 Preview4UIView
- 微軟釋出Windows Server Insider Preview Build 17079微軟WindowsServerIDEViewUI
- #io17# 釋出Android Things Developer Preview 4AndroidDeveloperView
- Cloudarrow V2.0 正式釋出!Cloud
- XD to Flutter 2.0 現已釋出!Flutter
- 微軟正式釋出Azure Functions 2.0微軟Function
- bbossgroups-2.0-RC釋出
- Jetspeed 2.0 Final 正式釋出
- .NET 6 Preview 6 正式釋出: 關注網路開發View
- SharePoint 2016 開發 工具Preview釋出View
- .NET 9釋出的最後一個預覽版Preview 7, 下個月釋出RCView