在“_main”中:nil:NilClass 的未定义方法“运行”(NoMethodError)

in `_main': undefined method `run' for nil:NilClass (NoMethodError)

我无法在名为 MySqliteRequest 的 class 中调用 运行 方法。当我调用该方法时,错误消失了。

in `main': undefined method `run' for nil:NilClass (NoMethodError)

这里是MySqliteRequest

的一些方法
class MySqliteRequest
    def print
        puts "Type Of Request #{@type_of_request}"
    end

    def run
        print
    end

    def _setTypeOfRequest(new_type)
        if(@type_of_request == :none or @type_of_request == new_type)
            @type_of_request = new_type
        else
            raise "Invalid: type of request already set #{@type_of_request} (new type => #{new_type}"
        end
    end
end

和主要方法↓

def _main()
   request = MySqliteRequest.new
   request = request.from('nba_player_data.csv')
   request = request.select('name')
   request = request.where('birth_state', 'Indiana')
   request.run
end
_main()

在您调用 request.run 时,request 的值是 nil。这就是为什么您会看到收到的错误。
发生这种情况是因为它正上方的行将 nil 值分配给 request 变量。

您显然来自另一种非 Ruby 的语言(可能是某种 C 语言?),从您格式化事物的方式来看。这将有助于您更加熟悉 Ruby 及其成语。但是,据我所知,您想改为执行以下操作:

def _main
   request = MySqliteRequest.new
   request.from('nba_player_data.csv')
   request.select('name')
   request.where('birth_state', 'Indiana')
   request.run
end
_main()

这假设您还在 MySqliteRequest 对象或模型上定义了(并且在某些情况下可能被覆盖)这些方法:
from
select
where

但是,请注意,您的处理方式完全违背 Ruby 和 Ruby 在 Rails 上的工作方式。