如何在一个.rb脚本中调用带有参数的函数到另一个.rb脚本

时间:2014-12-30 07:55:58

标签: ruby

我是Ruby语言的新手。我想使用ruby语言,我已经安装了ruby 2.1.5,我试图将一个.rb脚本调用另一个带有争论的.rb脚本,你可以建议我怎么做。 我写了以下代码

b.rb

require_relative 'a'
def hello($a,$b,$c)
$d=$a+$b+$c
print "d value is :"+$d
end



a.rb

def sample
$a=1
$b=3
$c=4
$str="hello"
eval"&$str($a,$b,$c)"
end

我从这个剧本中得到的任何东西你能不能建议我......

2 个答案:

答案 0 :(得分:0)

这是一个非常令人困惑的一点代码。一个可能使它工作的简单事情是要求b而不是你当前正在做的需要b的b。此外,您需要在定义后调用样本。

要调用示例函数,只需在b.rb

末尾的行下面写“sample”

答案 1 :(得分:0)

您需要将代码更改为此 -

a.rb

require_relative 'b'

def sample
  $a = 1
  $b = 3
  $c = 4
  $str = "hello"
  eval "#{$str}(#{$a},#{$b},#{$c})"
end

sample

b.rb

def hello(a, b, c)
  d = a + b +c
  print "d value is : " + d.to_s
end

现在,转到终端中存在这些文件的目录,然后运行以下命令:

$ ruby a.rb
#=> d value is : 8

我很想指出你错过了这里:

  1. 您需要在 a.rb 中包含 b.rb ,因为您正在使用 b.rb 中的方法而不是副词反之亦然。
  2. Ruby不允许将全局变量定义为方法定义中的参数。因此,在方法hello中,您需要(a, b, c),而不是($a, $b, $c)
  3. 您不能将字符串与整数连接:"d value is :"+$d它必须是字符串:"d value is :" + d.to_s
  4. 请不要创建全局变量并在代码的不同位置使用它们,除非您为了学习和实验而这样做。
  5. indent your code by two white spaces获得更好的阅读体验,以后当您或开发人员必须返回旧代码修复或添加新功能时,它将对您或其他人有所帮助。