成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

iOS程序員的Ruby初體驗

移動開發(fā)
一開始自己去學(xué)習(xí) Ruby 只是想了解 Podfile 里寫的東西到底是什么,到后面對 Cocoapod 和 fastlane 源碼和原理的好奇,再到想通過學(xué)習(xí)到的東西改善自己的工作流。本篇文章記錄了自己從小白到 Ruby 簡單入門的旅程。

[[223418]]

海賊王極惡世代

在技術(shù)浪潮不斷更新發(fā)展的時代下,身為程序員的我們不斷的在學(xué)習(xí)新技術(shù),不斷的更新自己的技能,不斷的和伙伴們一起成長,夢想著有天能航行到技術(shù)的頂端。就像海賊王里最惡世代們一樣,只有不斷的挑戰(zhàn),不斷的成長抱團(tuán)打倒 BOSS,才可能到達(dá)終點得到 ONE PIECE 。

前言

一開始自己去學(xué)習(xí) Ruby 只是想了解 Podfile 里寫的東西到底是什么,到后面對 Cocoapod 和 fastlane 源碼和原理的好奇,再到想通過學(xué)習(xí)到的東西改善自己的工作流。

本篇文章記錄了自己從小白到 Ruby 簡單入門的旅程。

Ruby 學(xué)習(xí)

做為一個Ruby小白,沒人教,啥都不懂該如何去學(xué)習(xí)這樣一門新的語言。

沒有別的,只能靠自己程序員的大腦和折騰。

對于新的編程語言我需要去了解他的語法,所以找到這幾個網(wǎng)址:

  • ruby基礎(chǔ)教程(中文第四版)
  • Ruby | 菜鳥教程
  • Ruby China社區(qū)

對于 Ruby 語法剛接觸有幾個地方有較深的映像:

1.完全面向?qū)ο螅喝魏螙|西都是對象,沒有基礎(chǔ)類型。平時我們使用的1,2,3,4,5,6在Ruby都是 ‘Fixnum’ 類的實例對象,有著屬于自己的方法。

  1. 1.to_s   // 將 1 轉(zhuǎn)為字符串 

2.方法調(diào)用可以省略括號,比如:

  1. puts("hello, world"

也可以這樣

  1. puts "hello, world" 

3.代碼塊之間不是用{}來表示代碼塊的范圍 而是 end 來表示塊的結(jié)尾。比如定義一個方法 OC 的做法是:

 

  1. - (void) method { 
  2.     這里是方法實現(xiàn)代碼 
  3.  } 

而在 Ruby 里:

 

  1. def method  
  2.     這里是方法實現(xiàn)代碼end 

4.可以用換行替換 “ ; ”,即代碼中可以省略 “ ; ”。

在 OC 中:

 

  1. - (void) method { 
  2.     ***行代碼; 
  3.     第二行代碼; 
  4.  } 

Ruby中:

 

  1. def method  
  2.     ***行代碼 
  3.     第二行代碼end 

5.每行代碼都有返回值。

我們在 irb 中輸入下面代碼(irb內(nèi)置在shell的ruby解釋器)。

 

  1. irb(main):001:0> puts 'hello, world'hello, world 
  2. => nil 

puts 'hello, world'意為打印'hello, world'字符串。所以我們得到的***個輸出為正常方法執(zhí)行的效果,打印出'hello, world'字符串。而第二行

  1. => nil 

則是意味著該行代碼的放回值為nil。

如果我們的代碼是給一個變量,那這行代碼的返回值將是變量的值,如下:

  1. irb(main):002:0> a = 1=> 1 

6.一個有返回值的方法中如果沒有return,則***一行代碼的返回值就是該方法的返回值。如:

 

  1. def method  
  2.     a = 1end 

該方法的返回值為 1 。

實踐

學(xué)習(xí)任何編程語言最快的方式就是上手敲。

在了解Ruby大致的語法后,便需要開始尋找工具來進(jìn)行 Coding 實戰(zhàn)。***基于工具的學(xué)習(xí)時間成本先挑選了 irb 和 Sublime Text

irb

全名 “interactive ruby” ,一個命令行工具,也可以看作是Ruby的解釋器。

MacOs下系統(tǒng)自帶,打開終端輸入:

  1. irb 

即可啟動。啟動后就可以輸入Ruby代碼的,注意每輸入一行代碼,irb都會給你返回該行代碼的返回值,如剛剛出示的代碼log

 

  1. irb(main):001:0> puts 'hello, world'hello, world 
  2. => nil 

Sublime Text

Sublime Text 是一套很好跨平臺的文字編輯器,如果想要編寫很長的 Ruby 代碼在 irb 不是很方便,所以選擇了它。( Sublime Text 維基百科 )

閱讀源碼

通過一段時間的實踐理解,大致對 Ruby 有初步的認(rèn)識,可以嘗試閱讀 fastlane, cocoapod 源碼來對它們進(jìn)行理解了 ( fastlane源碼,CocoaPods源碼 )。

通過源碼的閱讀對他們大致總結(jié)為:通過 Ruby 來調(diào)用終端命令。

這里尤其是fastlane,讀 fastlane 的很多的工具集 ( actions ) 的源碼你會發(fā)現(xiàn)里面基本是提供了各種 shell 命令的合集。如 action : pod_lib_lint 的源碼中可看到:

 

  1. command << "pod lib lint"if params[:verbose] 
  2. command << "--verbose"endif params[:sources] 
  3. sources = params[:sources].join(","
  4. command << "--sources='#{sources}'"endif params[:allow_warnings] 
  5. command << "--allow-warnings"end 

源碼中可以看到里面提供了我們平時在 Shell 中主動輸入的一些命令。

所以如果你想做一個 fastlane 的 action,其實很簡單,里面多數(shù)都是往command 數(shù)組中插入命令,你只要注意遵從 fastlane 對你們的要求格式進(jìn)行提交你的 action 代碼審核就行。

另外我們在使用 fastlane 進(jìn)行打包的時候,能清楚的看到其答應(yīng)出所使用的 xcodebuild 的命令。

其實這些也可以通過 Shell 腳本來實現(xiàn),那為什么 fastlane,Cocoapods 是用 Ruby 來實現(xiàn)的,筆者猜想可能是因為 fastlane,Cocoapods 本身就是基于 Ruby 開發(fā)中的工具 rake 和 bundle 思想而開發(fā)出來的吧。

繼續(xù)實踐

程序員就是要折騰自己,既然大致原理是通過 Ruby 執(zhí)行 Shell 命令,那他們能寫很多工具來幫助程序員開發(fā),我自己能寫一個嗎? 不求寫出來的高大上,但求學(xué)到的東西能實踐應(yīng)用,寫出來的東西能方便自己。

于是就有了這個項目 pod_updater,這個項目意在幫助自己擺脫每次提交自己的私有 pod 庫時,總是要在終端輸入一堆 git 命令然后在 push 到 podspec 倉庫等一系繁瑣的操作。

開始實踐

首先感覺 irb 不夠用了,不能對代碼進(jìn)行調(diào)試,而 Sublime Text 只是個編輯器,于是又找到了 RubyMine 。

RubyMine 是一個用于 Ruby 開發(fā)的 IDE,可見資料。

1.有了 IDE 還不夠,有時我們需要使用些成熟的三方庫,所以我們需要了解這些 Gem,bundle,Gemfile.

  • Gem:Ruby 應(yīng)用程式或程式庫。可以理解為Framework。
  • bundle: 是管理、解決 gem 之間相依性的工具,它會根據(jù) Gemfile 裡頭的設(shè)定自動下載和安裝 gem ,而且?guī)湍憬鉀Q相依問題。可以理解他為iOS開發(fā)中的Cocoapod。
  • Gemfile:理解為podfile即可,用于描述程序的相關(guān)庫安裝與依賴關(guān)系。

2.Ruby 執(zhí)行shell 命令

Ruby執(zhí)行 shell 命令方式有很多種,可見資料 ,而我選擇是的 IO.popen 方法。

 

  1. $ irb 
  2. IO.popen("date") { |f| puts f.gets } 
  3. Wed Jul  4 22:02:31 CST 2012=> nil 

3.接著就是各種資料查找和折騰,***模仿 fastlane 和 CocoaPods 將自己的工具做成 gem 的形式,于是我的***個 RubyGem pod_updater 誕生了,使用效果如下:

 

1.gif
這是pod_updater 終端使用.gif

總結(jié)

對于一門新語言,下手實踐才是真道理。

對于自己,學(xué)習(xí)語言***的動力莫過于他能幫助自己更好的生活和工作。

責(zé)任編輯:未麗燕 來源: 簡書
相關(guān)推薦

2010-02-24 14:16:56

Visual Stud

2011-08-02 10:26:59

iOS 多線程 線程

2010-07-13 09:31:08

RubyRuby on Rai

2013-12-12 10:46:22

2013-12-12 11:33:31

iOS 7API

2013-08-20 09:33:59

程序員

2020-12-21 08:24:21

程序員設(shè)備加班

2009-09-09 16:46:58

學(xué)習(xí)RubyRuby

2016-09-27 16:38:24

JavaScript微信Web

2011-05-13 14:34:02

程序員

2014-02-21 10:20:40

2018-08-02 17:00:15

Vue.js學(xué)習(xí)iOS開發(fā)

2009-08-01 09:06:35

UbuntuOneLinux開源操作系統(tǒng)

2009-03-09 15:12:39

XenServer安裝

2014-10-28 10:11:28

iOS程序員面試

2012-11-22 14:00:26

程序員

2017-11-14 21:30:15

2021-11-22 07:08:34

部隊程序員退伍

2012-03-06 09:22:46

程序員

2012-10-19 09:27:23

Ruby
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 亚洲另类春色偷拍在线观看 | 97精品国产97久久久久久免费 | 91麻豆精品国产91久久久更新资源速度超快 | 欧美日韩亚洲视频 | 精品久久久久久中文字幕 | 国产精品国产三级国产aⅴ无密码 | 久久这里有精品 | 91se在线| 亚洲色综合 | 亚洲草草视频 | 国产精品久久久久久 | 夜夜操操操| 午夜ww| 男女羞羞视频在线免费观看 | 久久综合久久久 | 不卡一区| 亚洲综合电影 | 亚洲视频在线观看 | 国产午夜精品一区二区三区嫩草 | 久久夜视频 | 一区二区三区四区免费观看 | 亚洲精品久久久一区二区三区 | 一级欧美一级日韩片免费观看 | 一级在线视频 | 久久久久久国产精品三区 | 日韩在线免费 | 9porny九色视频自拍 | 国产精品亚洲欧美日韩一区在线 | 国产一区二区三区高清 | 男人av在线播放 | 精品一区二区电影 | 亚洲性网 | 91久久精品一区二区三区 | 久婷婷 | 欧美中文字幕在线观看 | 免费超碰 | 在线播放精品视频 | 国产欧美在线 | 中文一区 | 一区二区电影 | 在线观看中文字幕 |