Tag: 变量

Ruby实例方法和变量

有些东西我不了解ruby 类实例变量或方法** 。 所以我有这个代码继续给我这个错误,我无法理解 看起来ruby认为我正在尝试调用Float.in_celsius,但我想在我的类实例中进行此调用。 #———————————– def ftoc(fr) fr = fr.to_f if (fr == 32) c = 0 elsif (fr == 212) c = 100 else c = (fr-32.0)*(5.0/9.0) end return c end def ctof (cl) cl = cl.to_f f = (cl*(9.0/5.0))+32.0 return f end #———————————– class Temperature attr_accessor :in_celsius, :in_fahrenheit #class metods def self.from_celsius(cel) […]

当变量超出范围时,是否意味着它不存在?

我不确定我是否理解范围 – 一个超出范围的变量(我正在使用Ruby)存在于某个地方的内存中,或者它是否停止存在(我知道你无法访问它)。 说超出范围的变量不再存在是否不准确? 也许这是一个哲学问题。

在Ruby中动态创建局部变量

我有一个CSV文件,我正在解析并在数据库中插入它的位。 我想写一个解析器,它考虑到列顺序将来可能会改变的事实。 我认为我可以通过将标题行作为数组抓取来实现此目的,并且对于每一行,将值放在动态创建的局部变量中(使用eval)。 然而,这似乎不起作用,因为局部变量似乎不能在eval之外访问。 我在其他地方读过,这可能在ruby 1.9中是正确的,但我使用的是1.8.7 代码如: headers = [“a”, “b”] headers.each do |h| p e_str = h+”=1″ eval(e_str) end puts a 根本不起作用,给予 test.rb:6:未定义的局部变量或方法`a’用于main:Object(NameError) 尽管第3行按预期打印“a = 1”和“b = 1” 有谁知道我怎么能这样做?

如何在ruby中清除rspec测试之间的类变量

我有以下类:我想确保类url仅为所有实例设置一次。 class DataFactory @@url = nil def initialize() begin if @@url.nil? Rails.logger.debug “Setting url” @@url = MY_CONFIG[“my value”] end rescue Exception raise DataFactoryError, “Error!” end end end 我有两个测试: it “should log a message” do APP_CONFIG = {“my value” => “test”} Rails.stub(:logger).and_return(logger_mock) logger_mock.should_receive(:debug).with “Setting url” t = DataFactory.new t = nil end it “should throw an […]

当变量改变时调用Hook

每次某个变量的值发生变化时,是否在ruby中有一个钩子?

在Rails中的视图之间传递变量

我一直试图弄清楚如何在两个视图之间传递一个变量,我已经查看了堆栈溢出的所有示例,我似乎无法使其工作。 我在我的用户中有这个 – > index.html.erb user.id %> 我正在尝试将user.id传递给我的人际关系 – > new.html.erb视图。 在我的控制器中我有: class RelationshipsController < ApplicationController def new @id = params[:id] end end 最后我有关系 – > new.html.erb Sign Up 我相信:id未正确传递。 我在其他所有例子中都缺少什么? 我没有错误,只显示没有任何内容。

如何在ruby中将类名作为变量传递

我有由另一个文件创建的foo.rb和main.rb文件。 foo.rb: class Foo def initialize @val = 1 end end main.rb的: file_name = gets.chomp() require_relative(file_name) class_name = file_name.capitalize a = class_name.new() p “This is val: #{a.val}” 但是我得到一个错误: undefined method new’for“Foo.rb”:String(NoMethodError)` 我的问题:如何将类名作为值传递。

Ruby中的符号和变量有什​​么区别?

我试图理解符号和ruby中的变量之间的区别。 在给出引用对象的名称时,它们似乎完全相同。 我已经读过这些符号可用于更快的程序,但我不确定它们为何或如何以任何方式与变量不同。

如何在中间件中设置一个可在我的所有应用程序中访问的变量?

我正在使用Ruby on Rails 3,我正在尝试使用中间件来设置变量@variable_name以后可以在控制器中访问。 例如,我的中间件是 class Auth def initialize(app) @app = app end def call(env) @account ||= Account.find(1) @app.call(env) end end 上面的代码正确设置了@account变量,但在我的应用程序中没有(在控制器,模型,视图……中)。 那么, 我该怎么做呢? 我看到这个答案是一种方法来做我需要的,但我希望@account变量“可以直接访问”。 也就是说,不使用这种方式,但在可见的情况下,例如在我的视图中,如下所示:

如何以一切可能的方式将字符串拆分为长度最多为3的连续子串?

我试图获取一个长度为1到10之间的字符串,并输出所有可能的方法将字符串分解为大小为1,2或3的连续子字符串。例如: Input: 123456 将整数切成单个字符,然后继续查找组合。 代码将返回以下所有数组。 [1, 2, 3, 4, 5, 6] [12, 3, 4, 5, 6] [1, 23, 4, 5, 6] [1, 2, 34, 5, 6] [1, 2, 3, 45, 6] [1, 2, 3, 4, 56] [12, 34, 5, 6] [12, 3, 45, 6] [12, 3, 4, 56] [1, 23, 45, 6] [1, 2, 34, […]