簡體   English   中英

在ruby終端中調用ruby方法

[英]calling a ruby method in the ruby terminal

我有一種方法,可以根據用戶給出的數量給出平方數。 例如,如果用戶輸入為5,則結果將為1、4、9、16、25。該方法有效。 我只是想知道如何在終端中運行它。 我知道我需要做ruby squares.rb,這是文件名,但是之后什么也不做。 我想發生的事情是,有人可以在終端中鍵入squares(3),並在其下獲取結果。 我確定這非常簡單,謝謝。

 def squares(input) numbers = (1..input) numbers.each do |number| puts number * number end end 

如果您想要一個調用該ruby方法的shell函數:

squares() {
    ruby -e '
      def squares(input)
        numbers = (1..input)
        numbers.each do |number|
          puts number * number
        end
      end
      squares ARGV.shift.to_i
    ' -- "$1"
}

然后

$ squares 3
1
4
9

如果用“紅寶石終端”來表示irb然后將該方法添加到~/.irbrc文件中,則可以

$ cat ~/.irbrc
def squares(input)
  numbers = (1..input)
  numbers.each do |number|
    puts number * number
  end
end

$ irb
irb(main):001:0> squares(3)
1
4
9
=> 1..3
irb(main):002:0> 

只是為了好玩,猴子修補了Integer類:

$ cat ~/.irbrc
class Integer
  def squares
    1.upto(self) {|n| puts n * n}
    self
  end
end
$ irb
irb(main):001:0> 3.squares
1
4
9
=> 3

您可以使用gets方法獲取用戶輸入,然后將其解析為int並在其上調用squares

嘗試這個

def squares(input)
  numbers = (1..input)
  numbers.each do |number|
    puts number * number
  end
end

def setup_input_loop
  loop do
    puts "Print square from 1 to n. Please enter n."
    input = gets.chomp.to_i
    squares(input)
    puts
  end
end

setup_input_loop

這是一個無需在文件名前添加ruby即可執行的變體,並且也不會造成無限循環。

# make a file called square_loop.rb

#!/usr/bin/env ruby
def squares(input)
  numbers = (1..input)
  numbers.each do |number|
    puts number * number
  end
end

def setup_input_loop
  loop do
    puts "Print square from 1 to n. Please enter n or X to exit"
    input = gets.chomp
    exit if input.downcase == 'x' 
    squares(input.to_i)
    puts
  end
end

setup_input_loop

然后只需使其可執行

chmod +x square_loop.rb

然后從您的終端使用./square_loop.rb調用它

雖然前置紅寶石也可以

ruby square_loop.rb

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM