【问题标题】:Defining methods with menu in Ruby在 Ruby 中使用菜单定义方法
【发布时间】:2023-02-24 02:50:44
【问题描述】:

我有此代码只是为了演示以支持我的问题。 如何将这三个命令分类为三种不同的方法?而且我的想法对吗?我已经写好了菜单,我开始掌握 Ruby,所以我想学习更多。

def connect(arguments)

  Net::SFTP.start(@options.set_host, @options.username, :password => @options.password, :port => @options.wharf) do |sftp|

    # create a directory
   
    if @options.mkdir
      sftp.mkdir!(@options.mkdir)
        puts "----------------------------------------------------------"
        puts " Creating Directory => " + "#{@options.mkdir}"
        puts "----------------------------------------------------------"
    end
  
    # remove a directory
  
    if @options.rmdir
      sftp.rmdir!(@options.rmdir)
        puts "----------------------------------------------------------"
        puts " Deleting Directory => " + "#{@options.rmdir}"
        puts "----------------------------------------------------------"
    end
    
    # delete a file

    if @options.erase         
      sftp.remove!(@options.erase)
        puts "----------------------------------------------------------"
        puts " Deleting File => " + "#{@options.erase}"
        puts "----------------------------------------------------------"
    end
  end

    puts "----------------------------------------------------------"
    puts " Exiting at => " + "(#{Time.now})"
    puts "----------------------------------------------------------"
    end
  end
end

  def run(arguments)
    parse(arguments)
    connect(arguments)
  end
end

sftp = Sftp.new
sftp.run(ARGV)

【问题讨论】:

    标签: ruby methods menu sftp


    【解决方案1】:

    我的第一个重构步骤如下所示:

    def connect(arguments)
      Net::SFTP.start(@options.set_host, @options.username, :password => @options.password, :port => @options.wharf) do |sftp|
        mkdir(sftp) if @options.mkdir
        rmdir(sftp) if @options.rmdir
        erase(sftp) if @options.erase         
      end
    
      output("Exiting at => (#{Time.now})")
    end
    
    private 
    
    def mkdir(sftp)
      sftp.mkdir!(@options.mkdir)
      output("Creating Directory => #{@options.mkdir}")
    end
    
    def rmdir(sftp)
      sftp.rmdir!(@options.rmdir)     
      output("Deleting Directory => #{@options.rmdir}")
    end
    
    def erase(sftp)
      sftp.remove!(@options.erase)
      output("Deleting File => #{@options.erase}")
    end
    
    def output(string)
      puts "----------------------------------------------------------"
      puts " #{string}"
      puts "----------------------------------------------------------"
    end
    

    【讨论】:

      猜你喜欢
      • 2012-03-22
      • 1970-01-01
      • 2023-02-17
      • 2010-09-13
      • 2012-10-21
      • 2010-10-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多