[英]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.