訓練用於運動來掌握特定的運動。在籃球比賽中,球員罰球,三分球和運球。在編程中,演習提供了一種有意練習的方法,以發展特定語言功能,API或習語的技能。
在體育中使用混戰來模仿遊戲的條件和復雜性,以整合演習中內置的技能並開發團隊合作。練習補充了更複雜的混戰實踐,例如Ruby Koans,Ruby Quiz或在開源項目中工作。如果我們使用日本表達式,則鑽頭也可以被認為是“ Kihon”,這是“ Kata”的簡單先驅。練習缺乏完整項目的複雜性。它們可以獨自或與朋友一起表演。
紅寶石鑽頭的挑戰集中在特定方法上。答案通常由單行組成。您的目標是在不諮詢任何外部文檔的情況下輕鬆和喜悅地完成演習。起初,您很可能會發現這種做法既不容易也不快樂。代碼打開。練習幾天,直到您對這些方法的了解變得自動。這樣做將使您的日常編程與語言的語法相比,通過釋放您的思想專注於更高級別,更高價值的複雜性,使您的日常編程更加愉快。
$ gem install ruby_drills
$ ruby_drills
訓練在命令行中運行。您可以在練習中回答問題。這種做法的好處是為您準備在REPL上開發,這是一種有用的技術,用於嘗試語言功能或算法,並為TDD提供了很好的補充。
首先從菜單中選擇可用的鑽頭。陣列和弦鑽當前的內容最多,因此從其中之一開始!
Enumerable#zip方法的練習會話可能包括以下內容:
We have two arrays:
a: [4, 5, 6]
b: [7, 8, 9]
Use a method from the Enumerable mixin that will take one element from
a new array and merge the corresponding elements from a and b to yield
[[1, 4, 7], [2, 5, 8], [3, 6, 9]]:
>> c = [1,2,3]
=> [1, 2, 3]
not yet...
>> c.zip(a, b)
=> [[1, 4, 7], [2, 5, 8], [3, 6, 9]]
!!! WIN !!!
How does your answer compare to the reference solution?
[1,2,3].zip(@a, @b)
Press any key to continue:
關於紅寶石鑽的問題?關於如何練習的想法?前往Google組。
當您與Ruby Drills互動時,您的答案將保存在經過測試的思維託管的遠程鑽鑽API中。此數據中沒有任何個人身份信息:目前,我們對整體實踐模式和統計信息感興趣,而不是個人用戶配置文件。活動數據看起來像:
{
"timestamp" : "May 5, 2013 12:03:51 AM CST",
"result" : "pass",
"input" : "@numbers.partition{|x | x.even? }",
"sessionId" : "2217-47e8-b80a-68b81c980c32",
"drill" : "PartitionDrill",
"type" : "attempt",
"reference" : "@numbers.partition {|x| x.even? }"
}
我們對以下問題感興趣:
這些數據將有助於我們發展紅寶石演習的體驗。這也可能構成更個性化的經歷的基礎,使您可以查看進度並將您的練習課程與他人進行比較。當我們分析收集的數據並與社區分享結果時,有關此問題的更多信息。
最終,我們想找出Ruby和其他編程語言中的演習和練習是否有助於我們解決更複雜的編程挑戰。目前,研究人員幾乎沒有可用的數據來科學地回答這個問題。希望在紅寶石鑽中收集的數據可以提供此難題的一部分。
每個練習都由四種方法組成:
setup :鑽機中使用的實例變量,包括@hints ,這是一系列提示,可以引導用戶朝著答案。
show :放置一個描述鑽頭的字符串。
reference :以字符串形式提供參考解決方案作為有效的Ruby代碼。將評估這一點,以確定是否應驗證用戶的輸入。
valid?(input) :返回真或錯誤的驗證函數。用於查看與參考解決方案匹配的用戶輸入是否符合其他約束。
創建新的演習很容易參與。請檢查Github上的問題列表以找到要做的事情。
如果您是Github的新手:
git checkout -b my-new-feature )git commit -am 'Add some feature' )git push origin my-new-feature )感謝貢獻者和這些傑出的人使紅寶石演習成為可能:
Ruby Drills已獲得Apache許可證的許可,版本2.0。有關更多信息,請參見封閉的許可證。 txt和Note.txt。