<thead id="kqoxr"></thead>
<blockquote id="kqoxr"></blockquote>
<legend id="kqoxr"><li id="kqoxr"></li></legend>
    1. <sub id="kqoxr"></sub>
      1. <blockquote id="kqoxr"><i id="kqoxr"><noscript id="kqoxr"></noscript></i></blockquote>
        <pre id="kqoxr"></pre>

        91午夜福利在线观看精品,亚洲综合色婷婷中文字幕,亚洲日本欧洲二区精品,竹菊影视欧美日韩一区二区三区四区五区,亚洲色在线V中文字幕,国产精品毛片av999999,精品视频不卡免费观看,亚洲全乱码精品一区二区

        三道Ruby面試試題

        時間:2024-08-25 09:57:22 學人智庫

        三道Ruby面試試題

          一、Ruby如何進行文件操作

        三道Ruby面試試題

          Ruby使用File類來操作文件,可以通過File.new來創建一個File類的實例并打開這個文件。

          file = File.new(“testfile”, “r”)

          # … process the file

          file.close

          testfile是想要操作的文件名,”r”說明了文件的操作模式為讀取。可以使用”w”表示寫入,”rw”表示讀寫。

          最后要記得關閉打開的文件,確保所有被緩沖的數據被寫入文件,所有相關的資源被釋放。

          也可以使用File.open來打開文件,open和new的不同是open可以使用其后的代碼塊而new方法則返回一個File類的實例。

          File.open(“testfile”, “r”) do |file|

          # … process the file

          end

          open操作的另一個優點是處理了異常,如果處理一個文件發生錯誤拋出了

          異常的話,那么open操作會自動關閉這個文件,下面是open操作的大致實現:

          class File

          def File.open(*args)

          result = f = File.new(*args)

          if block_given?

          begin

          result = yield f

          ensure

          f.close

          end

          end

          return result

          end

          end

          對于文件的路徑,Ruby會在不同的操作系統間作轉換。例如,在Windows下,/ruby/sample/test.rb會被轉化為\ruby\sample\test.rb。當你使用字符串表示一個Windows下的文件時,請記住使用反斜線先轉義:

          “c:\\ruby\\sample\\test.rb”

          也可以使用File::SEPARATOR表示不同系操作統的路徑分割符。

          二、Ruby如何創建一個線程

          可以使用Thread.new方法去創建一個線程,可以隨后代碼塊中列出線程執行的代碼:

          x = Thread.new { sleep 0.1; print “x”; print “y”; print “z” }

          a = Thread.new { print “a”; print “b”; sleep 0.2; print “c” }

          執行結果為:

          ab

          上面的示例程序中使用Thread.new創建了二個線程,線程隨即開始運行。但是運行結果很奇怪,為什么程序運行結果是“ab”呢?我們預期的執行結果應該是 “abxyzc”。

          當Ruby程序執行完畢的時候,他會殺掉所有的線程,不管其它的線程的運行狀態如何。如果沒有使用join方法,那么主程序執行完畢后會把所有沒有執行完畢的線程殺掉。

          上面的實例程序中,當主程序運行完畢時,兩個線程都沒有運行結束就被中止掉了。我們可以使用join方法來讓主程序等待某個特定線程結束,對每一個線程使用join方法,可以確保在程序結束前所有的線程可以運行完畢。

          x = Thread.new { sleep 0.1; print “x”; print “y”; print “z” }

          a = Thread.new { print “a”; print “b”; sleep 0.2; print “c” }

          x.join

          a.join

          我們使用Thread.new方法創建兩個新的線程并開始運行, 然后使用join方法等待線程結束。執行結果為:

          abxyzc

          可以看到通過使用join方法等待線程結束,程序運行結果和我們預期結果相符。

          另一個例子:

          x = Thread.new { sleep 0.1; print “x”; print “y”; print “z” }

          a = Thread.new { sleep 0.1; print “a”; print “b”; sleep 0.2; print “c” }

          執行沒有任何輸出,因為主程序執行完畢殺死兩個線程的時候這兩個線程沒有運行到輸出語句。

          也可以給join方法添加時間用來指明最大等待時間。如果超時join返回nil。

          x = Thread.new { sleep 0.1; print “x”; print “y”; print “z” }

          a = Thread.new { sleep 0.1; print “a”; print “b”; sleep 10; print “c” }

          x.join(5)

          a.join(5)

          執行結果為:

          abxyz

          上面的例子中對于每一個線程的最大等待時間是5秒,由于a線程需要執行10秒以上,所以a線程沒有運行完畢程序就將返回。

          三、ruby如何進行集成操作?Ruby能進行多重繼承嗎?

          Ruby繼承的語法很簡單,使用 < 即可。

          Ruby語言只支持單繼承,每一個類都只能有一個直接父類。這樣避免了多繼承的復雜度。但同時,Ruby提供了mixin的機制可以用來實現多繼承。

          可以使用super關鍵字調用對象父類的方法,當super省略參數時,將使用當前方法的參數來進行調用。

        【三道Ruby面試試題】相關文章:

        戴爾??嫉?2道面試題08-19

        面試中常見的面試試題08-21

        企業考核激勵:豬八戒的三道考試題09-06

        Microsoft面試題09-04

        iOS面試題07-10

        Spring面試試題09-19

        經典常見的面試試題09-14

        公司面試題09-12

        hibernate面試題10-18

        英語面試題精選06-13

        主站蜘蛛池模板: 狠狠色丁香婷婷综合久久来来去| 无人区码一码二码三码区| 亚洲国产欧美在线人成AAAA| 潮喷失禁大喷水无码| 成在线人免费视频播放| 日韩一区在线中文字幕| 人妻色自拍俺也色自拍| 日本激情久久精品人妻热| 岛国av在线| 中出21p| AV一区二区三区人妻少妇| 日本不卡不二三区在线看| 国产香蕉AV| 苏尼特右旗| 成人精品视频一区二区| 国产JJIZZ女人多水喷水| 手机看片欧美| 欧美?日韩?人妻| 国产奶头好大揉着好爽视频| 国产精品自拍中文字幕| 精品国产午夜福利在线观看| 国产人久久人人人人爽 | 色悠悠国产精品免费观看| 成人国产精品免费视频| 国产午夜精品亚洲精品| 国产乱码精品一区二区三区中文 | 377P欧洲日本亚洲大胆| 人妻少妇被猛烈进入中文字幕| 亚洲乱人伦| 色婷婷综合视频在线观看视频一区| 国产不卡一区二区精品| 激情图区| 人人澡av| 亚洲一区二区三区高清视频| 中国美女a级毛片| 国产极品美女高潮无套| 扒开双腿被两个男人玩弄视频| 国产裸舞福利在线视频合集| 四虎亚洲国产成人久久精品| 丁香婷婷在线观看| 亚洲成人无码网|