• 交互式Shell


    irb是从命令行运行的交互式shell

    在命令行中输入irb后回车,进入交互式ruby模式

    (1) 可以用load载入rb文件执行,如以下文件

    code/fib_up_to.rb

    def fib_up_to(max)

    i1,i2=1,1

    while i1<=max

    yield i1

    i1,i2=i2,i1+i2

    end

    end

    %irb

    irb(main):001:0>load 'code/fib_up_to.rb'

    =>true

    irb(main):002:0>result=[]

    =>[]

    irb(main):003:0>fib_up_to(20){|var| result<<var}

    =>nil

    irb(main):004:0 >result

    =>[1,1,2,3,5,8,13]

    (2) Tab补齐

    irb(main):001:0>a="cat"

    =>"cat"

    如果现在想尝试string%reverse方法,可先键入a.re然后按下Tab键两次,这时会出现所有以"re"开头的方法

    a.reject a.replace a.resonse_to? a.reverse a.reverse!

    我们继续按下v为a.rev,再次按下Tab键,会总动补齐为a.reverse回车

    =>"tac"

    如果在irb中定义了一个类,当想调用它的方法,也可用Tab补齐,Tab补齐是以一个扩展库来实现的,即irb/completion,当调用irb是,你可以从命令行加载它

    irb -r irb/completion

    或在运行中加入

    irb(mai):001:0 >require 'irb/completion'

    =>true

    (3) 子会话

    irb支持多个并发的会话,当前端的会话只有一个,其他的在被激活前处于休眠状态,如:

    % irb -r code/fib_up_to.rb

    irb(mai):001:0 >result=[]

    irb(mai):002:0 >fib_up_to(10) {|var| result <<val}

    =>nil

    irb(mai):003:0 >result

    =>[1,1,2,3,5,8]

    irb(mai):004:0>#create a nested irb session

    irb(mai):005:0>#irb

    irb#1(main):001:0 >result=%w{cat dog horse}

    irb#1(main):002:0 >result.map{|val| val.upcase}

    =>["CAT","DOG","HORSE"]

    irb#1(main):003:0 >jobs

    =>#0->irb on main (#<Thread:0xx331740>:stop)

    #1->irb#1 on main(#<Thread \: ox341694>:running)

    irb#1(main):004:0>fg 0

    irb(main):005:0>result

    =>[1,1,2,3,5,8]

    irb(main):006:0>fg 1

    irb #1(main):005:0>result

    =>["cat","dog","horse"]

  • 相关阅读:
    HTML5
    PHP
    eclipse项目导入到android studio
    Jpush教材
    Android性能优化典范
    Fresco好案例
    扫二维码关注微信号,回复“送礼包”就送超值大礼!
    Android开源项目大全之工具库
    android学习“知乎”建议
    C# Json时间类型的转换
  • 原文地址:https://www.cnblogs.com/djcsch2001/p/2035863.html
Copyright © 2020-2023  润新知