2016-07-31 91 views
0

我已经使用了一个gem并试图在我的代码中创建一个方法(反式)。未定义的局部变量或方法`转换器'为主:对象(NameError)

require 'yandex-translator' 

translator = Yandex::Translator.new(api_key) 

def trans(text) 
    a = translator.translate text, to: "ru" 
    return a 
end 

puts trans("stack") 

当我运行代码,我得到这个错误:

'trans': undefined local variable or method `translator' for main:Object (NameError) 

为什么我得到这个错误,我怎么能解决这个问题?

回答

0

因为通过这种方式你正在寻找一个局部变量translator而你没有。一些解决方案:

化妆翻译全球

$translator = Yandex::Translator.new(api_key) 

或通过翻译向反式方法在此代码

def trans(translator, text) 
    translator.translate text, to: "ru" 
end 
1

translator变量定义在类级别,因此它在main背景下的局部变量(因为整个代码在main的上下文中执行。)

您试图从t他实例上下文,它显然没有被定义。克服它的最简单方法是将@translator定义为一个类的实例变量:

@translator = Yandex::Translator.new(api_key) 

def trans(text) 
    @translator.translate text, to: "ru" 
end 
相关问题